用递归算法求杨辉三角
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:用递归算法求杨辉三角
代码:
#include
int fun(int i,int j)
{
if(j==1||j==i)
return 1;
else
return fun(i-1,j-1)+fun(i-1,j); }
int main()
{
int i,j,n;
printf("input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%5d",fun(i,j));
}
printf("\n");
}
getch();
}
运行结果:
实验二:趣味矩阵
(1)编写算法:打印具有下面规律的图形。
1
5 2
8 6 3
10 9 7 4
代码:
#include
main( )
{
int i,j,a[100][100],n,k;
scanf("%d",&n);
k=1;
for(i=1;i<=n;i=i+1)
for( j=1;j<=n+1-i;j=j+1) {
a[i-1+j][j]=k;
k=k+1;
}
for(i=1;i<=n;i=i+1) {
printf("\n");
for( j=1;j<=i;j=j+1) printf("%5d",a[i][j]); }
getch();
}
(2)螺旋阵:
代码:
#include
main()
{
int i,j,n,k,a[100][100]; printf("please input n:"); scanf("%d",&n);
k=1;
for(i=1;i<=n/2;i++)
{
for(j=i;j<=n-1;j++)
{
a[j][i]=k;
k++;
}
for(j=i;j<=n-i;j++) {
a[n+1-i][j]=k;
k++;
}
for(j=n-i+1;j>=i+1;j--) {
a[j][n+1-i]=k;
k++;
}
for(j=n-i+1;j>=i+1;j--) {
a[i][j]=k;
k++;
}
}
if(n%2==1)
{
i=(n+1)/2;
a[i][i]=n*n;
}
for(i=1;i<=n;i++)
{
printf("\n");
for(j=1;j<=n;j++)
printf("%5d",a[i][j]);
}
getch();
}
结果:
实验三:快速排序代码:
#include
Swap(int a,int b)
{
int t;
t=a;
a=b;
b=t;
}
int Partition (int a[], int p, int r) {
int i = p+1, j = r;
int x=a[p];
{
while (a[i] { i++; } while(a[j] >x) { j--; } while(i > j) break; Swap(a[i], a[j]); } a[p] = a[j]; a[j] = x; return j; } void QuickSort (int a[], int p, int r) { if (p { int q=Partition(a,p,r); QuickSort (a,p,q-1); QuickSort (a,q+1,r); } } int main() { int b[100],p=-1,n,r; int i; scanf("%d",&n); r=n; for(i=0;i scanf("%d",&b[i]); QuickSort(b,p,r); for(i=0;i printf("%d",b[i]); getch(); }