牛顿二项式系数C++算法
Newtons Binomial coefficient C++ algorithm
所以我们必须使用函数计算二项式系数。为了做到这一点,我创建了一个用于阶乘演算的函数和另一个使用后者来计算可能组合数量的函数。它们都运行良好(在以前的练习中完成),但由于某种原因,当我现在运行代码时,eclipse 停止工作。它应该采用用户输入的数字(在我的代码中j
)并与i
(从 0 开始)进行组合,直到i
等于 j
。有人有想法吗?
谢谢。
#include <iostream>
using namespace std;
//factorial function
int fact(int a) {
int resultat = 1;
while (a > 0) {
resultat = resultat * a;
a = a - 1;
}
return resultat;
}
//combinations function
int combinaisons(int z, int y) {
int c;
c = ((fact(y)) / ((fact(z)) * (fact(y - z))));
return c;
}
int main() {
int i, j;
cout << "Entrez le degree" << endl;
cin >> j;
while (j < 0) {
cout << "Un nombre naturel svp!" << endl;
cin >> j;
i = 0;
}
//calculation of the binomial coefficient
while (i != j) {
cout << combinaisons(i, j) << endl;
i = i + 1;
}
return 0;
}
当用户第一次输入正确的值时,您未能初始化i
。
使用其声明初始化i
就足够了。
你也没有处理i == j
的情况,毕竟binom(j,j) = binom(j,0)
//change the condition
while (i <= j) {
cout << combinaisons(i, j) << endl;
i = i + 1;
}
在你的主要你有:
国际 I, J;
如果 J 为 0,则永远不会为 i 赋值,因为 while (j <0) 永远不会为真。
然后你使用 j 和 i 喜欢这是一个确定的行为,但没有为未初始化的变量定义行为(在本例中为 i)。
让(i != j)循环永远存在,然后悬挂日食。
可能的解决方案:
整数 i = 0, j = 0;
并从循环中删除 i 变量的初始化。
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- C++A*算法并不总是在路径中具有目标节点
- 排序算法c++
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 算法问题:查找从堆栈中弹出的所有序列
- 下面是排序算法O(n)吗
- KMP算法和LPS表构造的运行时间
- 为什么我的排序算法会更改数组值
- 求最大元素位置的分治算法
- 具有非整数边容量的最大流量的Dinic算法
- 到连接组件算法的问题(递归)
- STL算法函数在多个一维容器上的使用
- 读取最后一行代码算法 - c++ 时出现问题
- 括号更改 O(n) 算法
- std::unordered_map 搜索算法是如何实现的?
- 如何实现高效的算法来计算大型数据集的多个不同值?
- 如何在 Mac 上使用 c++17 并行标准库算法?