打印出杨辉三角我可以用排列组合来做,但是那样很浪费空间,而且即使是用长整型数字做,由于阶乘得到的数太大,我也只能做出10几行。
我下面想要做的是不用排列组合的方法来打印出杨辉三角,但是在调用函数时出现了问题,希望各位大虾能指导一下。如果有更好的做法还希望能分享一下。谢谢!
main()
{
int c(int a,int b);
int i,j,k,n;
scanf("%d",&n); /*n为打印的行数*/
i=1; /*设当前打印行数为i*/
do
{
for (k=0;k<n;k++)
printf(" "); /*为打印出三角的图形而填补空格*/
for (j=0;j<=i;j++) /*设当前打印列数为j*/
{
if (c(i,j)<10)
printf(" %d",c(i,j));
else
if (c(i,j)<100)
printf(" %d",c(i,j));
else
printf("%d",c(i,j));
}
i++;
printf("/n");
}
while (i<=n);
}
int c(int a,int b) /*函数是从c(1,0)和c(1,1)开始的应该可以递归回来*/
{
if (b==0||a==b)
c(a,b)=1;
else
c(a,b)=c(a-1,b-1)+c(a-1,b);
return c(a,b);
}
错误 d:\下栽游戏\abm\bin\008.c 30: 需要用L值 在函数
错误 d:\下栽游戏\abm\bin\008.c 32: 需要用L值 在函数
不明白“需要用L值”是什么意思,我也看了版主 “ 卧龙孔明” 的 “用C语言求出了十万的阶乘结果 ”
里面的
if(num>=10L) h--;
if(num>=100L) h--;
if(num>=1000L) h--;
if(num>=10000L) h--;
中的"L"是不是跟这个是一回事呢?