今天听课忽然听到,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); }
文章评论