当前位置:文档之家› 实验1:循环与递归算法实验

实验1:循环与递归算法实验

实验一:循环与递归算法的应用
【实验目的】
1.掌握循环、递归算法的基本思想、技巧和效率分析方法。

2.熟练掌握循环和递归的设计要点,清楚循环和递归的异同。

3.学会利用循环、递归算法解决实际问题。

【实验内容】
1. 问题描述:
(1)题目一:打印图形
编程打印如下图所示的N阶方阵。

1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
(2)题目二:计算前n项和
根据参数n,计算1+2+……+n。

要求:用循环和递归分别实现
(3)题目三:回文判断
判断s字符串是否为“回文”的递归程序。

2. 数据输入:个人设定,由键盘输入。

3. 要求:
(1)上述题目一、二必做,题目三选做;
(2)独立完成实验及实验报告。

【具体实现过程】
题目一:
【算法分析】
通过两个for循环控制数字的输出。

【实现代码】
#include<stdio.h>
int main()
{
int i,j,k,n,l,middle,temp;
printf("请输入n的大小\n");
scanf("%d",&n);
k = 1;
temp = 0;
middle = 0;
for(i=1;i<=n;i++)
{
middle = i+1;
k += temp;
printf("%d ",k);
l = k;
for(j=n;j>0;j--)
{
if(j==1)
printf("\n");
else
{
l += middle;
printf("%d ",l);
middle++;
}
}
temp++;
n--;
}
return 0;
}
题目二:
【算法分析】
定义一个sum函数求和,把求出的新值赋给sum,最后求得的值即为前n项和。

【实现代码】
递归
#include "stdio.h"
int fun(int num)
{
int sum;
if( num==1)
sum=1;
else
sum=num+fun(num-1);
return sum;
}
void main()
{
int n,s;
printf("n=");
scanf("%d",&n);
s=fun(n);
printf("s=%d\n",s);
}
循环
#include<stdio.h>
void main()
{
int sum=0;
int n,i=1;
printf("n=");
scanf("%d",&n);
while(i<=n)
{
sum+=i*i;
i++;
}
printf("%d",sum);
}
【实验心得】
通过本实验掌握循环、递归算法的基本思想、技巧和效率分析方法。

熟练掌握循环和递归的设计要点,清楚循环和递归的异同。

学会利用循环、递归算法解决实际问题。

让大问题变为小问题,提高效率。

相关主题