求助用c语言来编写杨辉三角行的递归程序
请编写杨辉三角行到10行的c语言递归程序注:我是刚学c语言的,才刚学到递归,请用简单的程序来编写这道题,我上网找到的很多都有用到“[]”这个符号的,我还没有学到,请尽量简...
请编写杨辉三角行到10行的c语言递归程序
注:我是刚学c语言的,才刚学到递归,请用简单的程序来编写这道题,我上网找到的很多都有用到“[ ]”这个符号的,我还没有学到,请尽量简单编写 展开
注:我是刚学c语言的,才刚学到递归,请用简单的程序来编写这道题,我上网找到的很多都有用到“[ ]”这个符号的,我还没有学到,请尽量简单编写 展开
5个回答
展开全部
#include<stdio.h>
int jisuan(int i,int j)
{
if(j==0) return 1;
if(i==j) return 1;
else return (jisuan(i-1,j-1)+jisuan(i-1,j));
}
void f(int n)
{
int i,j;
if(n>0)
{
if(n>=3)
{
for(i=0;i<n;i++)
{for(j=0;j<=i;j++)
printf("%5d",jisuan(i,j));
printf("\n");
}
}
}
else
printf("你输入的不是一个大于0的正整数!\n");
}
void main()
{
int n;
printf("请输入一个大于0的正整数:");
scanf("%d",&n);
f(n);
}
//希望能够帮助到你!
int jisuan(int i,int j)
{
if(j==0) return 1;
if(i==j) return 1;
else return (jisuan(i-1,j-1)+jisuan(i-1,j));
}
void f(int n)
{
int i,j;
if(n>0)
{
if(n>=3)
{
for(i=0;i<n;i++)
{for(j=0;j<=i;j++)
printf("%5d",jisuan(i,j));
printf("\n");
}
}
}
else
printf("你输入的不是一个大于0的正整数!\n");
}
void main()
{
int n;
printf("请输入一个大于0的正整数:");
scanf("%d",&n);
f(n);
}
//希望能够帮助到你!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
杨辉三角就是用双重for循环写出来的,那么简单的却要搞得复杂
#include<stdio.h>
#define M 10
void main()
{
int a[M][M], i , j ;
for(i=0;i<M;i++)
for(j=0;j<=i;j++)
{
if(i==j||j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%5d",a[i][j]);
if(i==j)printf("\n");
}
}
#include<stdio.h>
#define M 10
void main()
{
int a[M][M], i , j ;
for(i=0;i<M;i++)
for(j=0;j<=i;j++)
{
if(i==j||j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%5d",a[i][j]);
if(i==j)printf("\n");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是数组符号,因为这道题用数组比较容易,递归法有点难度,
我这有一方法你看看
#include<stdio.h>
void main()
{
int e(int x,int y);
int i,j,n;
printf("n=");
scanf("%d",&n);
for(i=0;i<=n;i++)
{ for(j=0;j<n-i;j++)
printf(" ");
for(j=1;j<i+2;j++)
printf("%6d",e(i,j));
printf("\n");
}
}
int e(int x,int y)
{
int z;
if((y==1)||(y==x+1))
return(1);
else
{z=e(x-1,y-1)+e(x-1,y);
return(z);}
}
不懂问我
我这有一方法你看看
#include<stdio.h>
void main()
{
int e(int x,int y);
int i,j,n;
printf("n=");
scanf("%d",&n);
for(i=0;i<=n;i++)
{ for(j=0;j<n-i;j++)
printf(" ");
for(j=1;j<i+2;j++)
printf("%6d",e(i,j));
printf("\n");
}
}
int e(int x,int y)
{
int z;
if((y==1)||(y==x+1))
return(1);
else
{z=e(x-1,y-1)+e(x-1,y);
return(z);}
}
不懂问我
追问
我想问一下这程序算递归么?
追答
这就是递归法啊 你仔细观察int e(int x,int y)
{
int z;
if((y==1)||(y==x+1))
return(1);
else
{z=e(x-1,y-1)+e(x-1,y);
return(z);}
}
这用到递归了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你想学好递归调用 那么杨辉三角不是让你用来练题的 你倒不如去写下汉诺塔 这个题目是递归比较经典的一个例子 如果你了解了 对于其余的应该没什么问题 而且杨辉三角的结构选择递归式比较不明智的一种做法 做起来会相当的复杂 也可以说 根本就做不了
在项目 很少人会用递归的,递归只是对编程比较好,简化设计程序,但是增加了系统开销,也就是说,每递归一次,栈内存就多占用一截。
#include "stdio.h"
#include "conio.h"
main()
{
int i,j;
int a[10][10];
printf("\n");
for(i=0;i<10;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<10;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}
在项目 很少人会用递归的,递归只是对编程比较好,简化设计程序,但是增加了系统开销,也就是说,每递归一次,栈内存就多占用一截。
#include "stdio.h"
#include "conio.h"
main()
{
int i,j;
int a[10][10];
printf("\n");
for(i=0;i<10;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<10;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询