This question already has answers here:
Recursive to Iterative Pascal's Triangle
(3个答案)
2年前关闭。
此代码基本上计算nCr以打印帕斯卡的三角形。
该函数将如何转换为迭代版本?
我之前忘记提及这一点,但是解决方案必须不使用列表,以某种方式将这种确切的递归逻辑转换为迭代逻辑。
我已使用2D数组保存值,以便可以使用它们,而不必一次又一次调用函数。我已经使用了动态编程的概念。请对其进行研究以了解代码。
(3个答案)
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);
}
}
该函数将如何转换为迭代版本?
我之前忘记提及这一点,但是解决方案必须不使用列表,以某种方式将这种确切的递归逻辑转换为迭代逻辑。
最佳答案
#include <stdio.h>
int main(void) {
int n,r;
scanf("%d%d",&n,&r);
int mem[n+1][r+1];
int i,j;
for(i=0;i<n+1;i++)
{
for(j=0;j<r+1;j++)
{
if (j == 0 || j == i || i == 1 || i == 0)
mem[i][j]=1;
else
mem[i][j]=mem[i-1][j]+mem[i-1][j-1];
}
}
printf("%d",mem[n][r]);
return 0;
}
我已使用2D数组保存值,以便可以使用它们,而不必一次又一次调用函数。我已经使用了动态编程的概念。请对其进行研究以了解代码。
08-15 22:02