C语言实验六实验报告.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高级语言程序设计上机实验报告

一、实验目的

1.理解递归问题基本思想

2.学会编写递归程序,理解递归何时结束。

3、清楚明白结束条件无法满足的递归程序将导致无穷递归的情况发生。

二实验题目

1.计算游戏人员的年龄

有5个人围坐在一起,问第5个人多大了年纪,他说比第4个人大2岁:问第4个人多大年纪。他说比第3个人大2岁;问第3个人多大年纪,他说比第2个人大2岁;问第2个人多大年纪,他说比第1个人大2岁。第1个人说自己10岁,问第5个人多大年纪。

(1)程序源代码:

#include

unsigned int ComputeAge(unsigned int n);

void main ()

{

unsigned int n =5;

printf("The 5th person's age is %d\n",ComputeAge(n));

}

unsigned int ComputeAge(unsigned int n)

{

unsigned int age;

if (n==1)

{

age =10;

}

else

{

age =ComputeAge(n-1)+2;

}

return age;

}

(2)运行结果

2.计算最大公约数

利用计算最大公约数的三条性质,用递归方法计算两个整数的最大公约数。

性质1 如果x>y, 则x和y的最大公约数与x-y和y的最大公约数相同,即 gcd(x,y)=gcd(x-y,y)(x>y)

性质2 如果y>x,则x和y的最大公约数与x和y-x的最大公约数相同,即 gcd(x,y)=gcd(x,y-x)(x

性质3 如果x=y,则x和y的最大公约数与x的值和y值相同,即

gcd(x,y)=x=y

(1)程序源代码

#include

int MaxCommonFactor(int a, int b);

void main()

{

int x,y,z;

printf("Please int x, y:");

scanf("%d, %d", &x, &y);

z=MaxCommonFactor(x, y);

printf("The max common factor = %d\n", z);

}

int MaxCommonFactor(int a, int b)

{

if (a<=0 ||b <=0)

return -1;

if (a == b)

{

return a;

}

else if (a>b)

{

return MaxCommonFactor(a-b, b);

}

else

{

return MaxCommonFactor(a, b-a);

}

}

(2)运行结果

3.设计一个函数MaxCommonFactor(),利用欧几里德算法(也称辗转相除法)计算两个正整数的最大公约数

(1)程序源代码

#include

#include

int MaxCommonFactor(int a,int b);

int main(void)

{

int a,b,x;

printf("Please input a,b:");

scanf("%d, %d",&a,&b);

z=MaxCommonFactor(a,b);

if(x !=-1)

{

printf("MaxCommonFactor= %d\n",x);

}

else

{

printf("Input error!\n");

}

return 0;

}

int MaxCommonFactor(int a,int b)

{

int r;

if(a<=0||b<=0)

return -1;

do{

r=a%b;

a=b;

b=r;

}while(r !=0);

return a;

}

(3)运行结果

相关文档
最新文档