C语言中n层循环嵌套实现

2016年4月24日 348 次阅读 0 条评论 0 人点赞

今天听课忽然听到,n阶行列式可以运用按行展开或者按列展开,不断降阶实现,就可以降到三阶行列式,这样就可以计算了。方便用计算机实现。回到寝室,想着把这个程序编出来。编了一个多小时,并没有任何进展,才发现,这种算法,需要循环嵌套,才可以实现,或者运用函数地递归实现,这儿提供一种不用递归,就可以实现for循环嵌套的方案,下边边分享给大家,确切说,我也没看懂。本人菜鸟一枚。

//depth表示循环嵌套层数,n表示每层循环的取值个数即[1, n]
void func(int depth, int n)
{
    int cur = 0;
    int *tab = (int *)malloc(depth * sizeof(int));
    for (*tab = 0; cur >= 0; ) {
        ++tab[cur];
        if (tab[cur] <= n) {
            if (cur == depth - 1) {
                int i;
                for (i = 0; i < depth; ++i) {
                    printf("%d ", tab[i]);
                }
                printf("\n");
            } else {
                tab[++cur] = 0;
            }
        } else {
            --cur;
        }
    }
    free(tab);
}

菜鸟

文章评论(0)