为什么我的解决二项式系数崩溃?我真的试图学习递归,但我仍然认为我不清楚它。我想知道是否有人可以帮助我了解递归,以及如何递归思考?C中的二项系数递归解决方案
即使我写了一个好的基本案例,我的程序崩溃了。学习递归和清晰演示的任何链接都会对我非常有帮助。
这是我的代码二项式系数,我无法找到错误/错误,寻求你的帮助。
代码:
#include<stdio.h>
long long m,n,o,p,result;
long long binomial(long long n,long long m)
{
if(n==m)
return 1;
else {
if(m==0)
return 1;
else {
o=binomial(n-1,m);
p=binomial(n-1,m-1);
return o+p;
}
}
}
int main()
{
printf("Please Enter The Value Of n:\n");
scanf("%lld",&n);
printf("Now Enter The value of m:\n");
scanf("%lld",&m);
result = binomial(n,m);
printf("Resultant Binomial coefficient: %lld\n",result);
return 0;
}
:M =二项式(N-1,M); N =二项式(N-1,M-1);你不能用新的结果替换你的m值,因为你需要第二个二项式调用的原始m值。 – algojava
@David Hoelzer谢谢你的帮助,但现在我已经对我的代码进行了修改,请问为什么它还不能正常工作?这里是代码: –
#include long long m,n,result,o,p; long long binomial(long long n,long long m) if(n == m)return 1; else { if(m == 0)return 1; else { o =二项式(n-1,m); p =二项式(n-1,m-1); return o + p; } } } INT主() { 的printf( “请输入n的值:\ n”); 的scanf( “%LLD” &n); 的printf( “现在请输入的m的值:\ n”); 的scanf( “%LLD” &m); 结果=二项式(N,M); 的printf(“合力二项式系数:%lld \ n“,结果); return 0; } –