-2
该代码基本上计算nCr打印帕斯卡的三角形。如何将此递归函数转换为迭代版本?
#include <stdio.h>
int nCr(int n,int r){
if (r == 0 || r == n || n == 1 || n == 0){
return 1;
}
else{
return nCr(n-1,r) + nCr(n-1,r-1);
}
}
这个函数如何变成迭代版本?
我之前忘了提到这个,但是解决方案必须不使用列表,以某种方式将这个确切的递归逻辑转换为迭代逻辑。
只要想一想在每个递归步骤中会发生什么,并实现一个类似这样的循环。您可能需要一个商店来保存迭代数据的值。使用递归时,此数据存储在堆栈中。快乐工程! –
在一张纸上绘制帕斯卡三角形。尝试从开始“走”到具体的价值。在上述“步行”期间,考虑在每一步中你需要什么样的价值观,以及这些价值观何时完成了他们的目标并可以被抛弃。然后用一个循环和一些变量来写这个步骤。 – StoryTeller