首页 新闻 会员 周边 捐助

有大佬看一下我这个用递归求杨辉三角哪里错了吗

0
悬赏园豆:10 [已解决问题] 解决于 2021-10-13 23:47

include<iostream>

using namespace std;
int yh(int i,int j)
{
int a[i][j] = {};
a[1][0] = 1;
if(i == j) a[i][j] = 1;
if(i>1&&i
!=j)a[i][j] = yh(i-1,j-1)+yh(i-1,j);
return a[i][j];
}
int main()
{
int i,j;
for(i = 0;i<10;i++)
{
for(j = 0;j<i;j++)
{
cout <<yh(i,j)<<'\t';
}
cout <<endl;
}
return 0;
}

泪——无痕的主页 泪——无痕 | 初学一级 | 园豆:193
提问于:2021-10-12 23:46
< >
分享
最佳答案
0

你这个代码在我这里编译不过去。

int a[i][j] = {};

不定长的数组在C++是编译不通过的。还有你的杨辉三角末尾少了个1。

还有其他问题,我给出以下修改方案,自己仔细看看是哪里出了问题。

#include <iostream>
using namespace std;

int yh(int i, int j)
{
    int a[10][10] = {};    //修改1:解决编译不过去
    a[1][0] = 1;
    if (i == j)
        a[i][j] = 1;
    if (i > 1 && i != j)
        a[i][j] = yh(i - 1, j - 1) + yh(i - 1, j);
    return a[i][j];
}
int main()
{
    int i, j;
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j <= i; j++)   //修改2:杨辉三角每行最后少 1
        {
            cout << yh(i, j) << '\t';
        }
        cout << endl;
    }
    system("pause");
    return 0;
}

提问建议:请用代码块和格式化好的代码,这样的代码看起来不够赏心悦目,影响热心网友的心情。

收获园豆:10
寂静的羽夏 | 老鸟四级 |园豆:2066 | 2021-10-13 17:49

好的,那个代码我在编译器上敲好的,不知道为啥复制过来就成这样了。感谢解答。

泪——无痕 | 园豆:193 (初学一级) | 2021-10-13 23:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册