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;
}
你这个代码在我这里编译不过去。
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;
}
提问建议:请用代码块和格式化好的代码,这样的代码看起来不够赏心悦目,影响热心网友的心情。
好的,那个代码我在编译器上敲好的,不知道为啥复制过来就成这样了。感谢解答。