牛顿二项式系数C++算法

Newtons Binomial coefficient C++ algorithm

本文关键字:C++ 算法 二项式      更新时间:2023-10-16

所以我们必须使用函数计算二项式系数。为了做到这一点,我创建了一个用于阶乘演算的函数和另一个使用后者来计算可能组合数量的函数。它们都运行良好(在以前的练习中完成),但由于某种原因,当我现在运行代码时,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 变量的初始化。