- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
为什么我的二项式系数解法会崩溃?我真的尝试过学习递归,但我仍然认为我对此不清楚。不知有没有人能帮我学习一下递归,如何递归思考?
即使我写了一个很好的基本案例,我的程序也会崩溃。任何通过清晰的演示来学习递归的链接都会对我很有帮助。
这是我的二项式系数代码,我找不到错误/错误,正在寻求您的帮助。
代码:
#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;
}
最佳答案
当 n >= k 时,二项式系数仅针对 n 和 k 对定义。通常在二项式系数表达式中使用 n 和 k,但它们对应于您的 n
和 m
代码。
您需要对输入进行一些错误检查以避免出现问题。当 n
小于 m
时,您的代码会崩溃,因为每次执行语句 o=binomial(n-1,m);
时,被调用函数中n
的值减少了,但是n
已经小于m
,它是非零的(如果m
为零函数将简单地返回 1
),因此 n == m
永远不会发生。
顺便说一下,您可以通过几种方式改进您的代码。使用全局变量通常不是一个好主意,最好移动声明:
long long m, n, result;
进入 main()
,其中需要这些变量。此外,main()
的函数签名应为 int main(void)
。您可以大大加强 binomial()
函数中的逻辑,从而消除对 o
和 p
的需要:
long long binomial(long long n,long long m)
{
if (m != 0 && n != m) {
return binomial(n-1, m) + binomial(n-1, m-1);
} else {
return 1;
}
}
关于c - C中的二项式系数递归解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42228333/
使用 glm 时,binomial、binomial() 和 'binomial' 之间有什么区别。它们并不相同,如以下代码所示: > library(MASS) > bwdf = birthwt[-
我一直在用我的(非 r-savvy)大脑来让 R 产生二项式 glmer 模型的正确预测的百分比。我知道这不是统计上的 super 信息,但经常被报道;所以我也想举报。 数据: 因变量:Tipo,它有
我一直在寻找一种方法来使数据符合 beta 二项分布并估计 alpha 和 beta,类似于 VGAM 库中的 vglm 包的方式。我一直无法找到如何在 python 中执行此操作。有一个 scipy
如何在 Julia 中提取一般线性模型中指定的数据分布?例如,下面我安装了一个玩具示例 Poisson GLM。我想从模型中提取一个字符串“Poisson”。同样,如果使用数据分布指定模型 = Bin
我是一名优秀的程序员,十分优秀!