实验6 函数
实验要求:
1.掌握C语言函数定义及、声明、及调用的方法;
2.掌握主调函数和被调函数之间的参数传递方式;
3.掌握函数嵌套调用的方法;
4.了解函数递归调用的方法;
读程序:
1.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半加一个。到第5天早上想再吃时,见只剩下一个桃子了,求第一天摘了多少?
#include
int fun(int p)
{
int n=1,day;
for(day=1;day<=p;day++)
n=(n+1)*2;
return n;
}
void main()
{
int n,day;
printf("Please input day:");
scanf("%d",&day);
n=fun(day);
printf("%d",n);
}
(1)算法分析:解决此问题采取逆向思维的方法,从后往前推断。
(2)子函数分析:本题的子函数写在主函数的上面,并设置成带有返回值,当然也可以改成不带返回值的。参数的传递过程是将主函数中day的值传给子函数的参数p,代表已过的天数。题目中说“到第5天早上想再吃时”,此题中的子函数可以实现任意天的计算,比如9天,8天吃光,这个值由主函数输入。另外变量n表示猴子摘下的桃子个数。
2.编写程序,利用递归的方法计算n!
#include"stdio.h"
void main()
{
long fun(int n);
int n;