使用pascals三角形打印二项式系数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用pascals三角形打印二项式系数相关的知识,希望对你有一定的参考价值。

问题是:

二项式系数是二项式幂的乘积的数值因子,如(x + y) * n。例如,(x + y) * 2 = 2 x + 2 x y + 2 y具有系数1 2 1。可以使用Pascal三角形计算二项式系数:

三角形的每个新级别在末端都有1个;内部数字是它们上面两个数字的总和。我必须编写一个程序,其中包含一个递归函数,使用Pascal三角形技术生成幂n的二项式系数列表。

这是代码。如果输入1 2 1为2,我需要得到输出x,但输出不正确。

#include <iostream>
using namespace std;
int pascal(int n, int x){
    if ((n==0) || (n==1) || (n==x))
        return 1;
    else
        return pascal(n, x-1) + pascal(n, x-1);
}
int main()
{
    int x;
    cout << "Input the number of which you want to print the binomial coefficients : ";
    cin >> x;
    int n = 0;
    for (int i=0; i<x; ++i)
        cout << pascal(n, x) << " ";
}
答案

一个好的经验法则是,无论何时将变量传递给函数并且其值保持不变,都将其作为常量传递。然后误解了

n=1

代替

n==1

不可能发生,因为编译器不会允许它。

int pascal(const int n, const int x)
{
    if(n == 0 || n == 1 || x == 0 || x == n)
        return 1;
    return pascal(n-1, x-1) + pascal(n-1, x);
}

请注意

const int n, const int x

而不是

int n, int x

在功能头。

int main()
{   
    for(int n=0;n<12;++n){
        std::cout << "n = " << n << ": ";
        for(int x=0;x<=n;++x){
            std::cout << pascal(n, x) << ' ';
        }
        std::cout << std::endl;
    }
    return 0;
}

以上是关于使用pascals三角形打印二项式系数的主要内容,如果未能解决你的问题,请参考以下文章

C ++二项式系数太慢了

[LeetCode] 118. Pascal's Triangle 杨辉三角

算法:杨辉三角(Pascal's Triangle)

二项展开式的系数

常用算法——打印杨辉三角形

常用算法详解——打印杨辉三角形