gpt4 book ai didi

c - 如何将这个递归函数转换为迭代版本?

转载 作者:行者123 更新时间:2023-11-30 20:32:29 26 4
gpt4 key购买 nike

此代码基本上计算 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;
}

我使用了二维数组来保存值,以便我可以使用它们而不是一次又一次地调用该函数。我使用了动态规划概念。请研究它以理解代码。

关于c - 如何将这个递归函数转换为迭代版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47364871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com