C语言:哪位高手能解释一下下面这个程序,尽可能一步一步详细解说,解释的清楚的话再加分

作者&投稿:成侧 (若有异议请与网页底部的电邮联系)
#include "stdafx.h" /*C语言头文件,表示下面的程序要引用某一个C编译器自带的函数*/
int age(int n) /*定义返回值为整形,输入值为整形n的函数*/
{
int c; /* 定义整数c*/
if(n==1) /* ==是逻辑等的判断*/
c=2; /*如果输入的n等于1则执行c=2*/
else c=age(n-1)+2; /*如果输入的n不等于1则执行c=agen(n-1)+2,这是个循环调用,直到n=1为止,此时c=2*/
return c; /*返回c值*/
}
main()
{
printf("第5个小朋友的年龄为%d\n",age(5)); /* 返回n=5的输出值 */
}

这个程序是讲述的是5只小盆友互相蚕食的故事。
age(N)是一种病毒, 得病的第N只小盆友会吃掉第(N-1)只小盆友,然后年龄长2。于是,age(5)就说明了第五只小盆友吃了第四只小盆友,而第四只小盆友是吃了第三只小盆友才出现的,以此类推,直到第一只小盆友。第一只小盆友只有2岁…

age是一个递归函数,我们先从main入手。,需要输出age(5),此时调用age(5),n=5,则进入c=age(4)+2;又不知道age(4),再次调用age,此时又不知道age(3),需要调用age(2),又不知道age(1),调用age(1),此时c==2,然后再回退回去,age(2)=4,age(3)=6.age(4)=8,age(5)=10;其实这是用的堆栈方面的知识,栈是先后后出的一种数据结构,可能你更糊涂了,就先说这些吧

换成数学表达式就是:
age(1)=2;
age(n)=age(n-1)+2;
求age(5);
用的是递归的方式;

#include "stdafx.h" %函数
int age(int n) %定义子函数
{
int c; %子函数自变量定义 C为整数
if(n==1) %条件判断 如果n等于1
c=2; %赋值 c=2
else c=age(n-1)+2; %如果n不等于2执行该程序c=age(n-1)+2
return c; 返回值 c
}
main() %主函数
{
printf("第5个小朋友的年龄为%d\n",age(5)); %输出值
}

假设在主函数中的调用是age(k),那么在调用age()的过程中会调用age()函数k-1次(不包括主调用),直到k的值为1时,才执行if语句,将c的值赋值为2,(在这之前c的值一直是垃圾数据),然后开始age()函数的返回,调用了k-1次,那自然就要返回k-1次,else语句中c = age(n-1) + 2,就相当与c = c + 2,这样c经过k-1次重复覆盖赋值就是最终主函数的调用结果。例如:k = 5,则调用的结果是10

请懂C语言的解释一下下列代码~

这些都是c语言里的一些头文件,里面包含一些已经已经编写号的函数提供给用户使用!@

#include-----getch()等函数
#include----包含一些数学常用的函数
#include-----包含malloc()等函数
#include----包含system()函数

这几个是常用的头文件,对于其他的头文件,你可以在需要的时候查一下!

不同的出发点、不同的过程带来了不同的结果。

谁能帮忙详细解释一下这个C语言程序~~要详细的哦~
答://把每一个元素相加,存入cc中。cc+ = aa+bb;//把cc的数据放入结构体c中,因为结构体中存的是10进制的,所以,用cc%10,只取cc的个位数,他的十位数在下面处理。c->number[i]=cc%10;//如果cc大于10的话,这个就能存住cc的10位数,相当于进位了。cc/=10;} c->length=i;} //初始化...

请问哪位JS高手帮我解释下下面这段代码的意思啊,最好每行的解释下,谢谢...
答:ddmenuitem的样式为隐藏 } function mclosetime()//定义函数mclosetime函数 { closetimer = window.setTimeout(mclose, timeout);//setTimeout 方法用于在指定的毫秒数(timeout=500)后调用函数mclose函数。}//setTimeout() 方法会返回一个值,这个值被储存在名为 closetimer 的变量中。

哪位编程高手能帮我翻译一下,下面是什么意思?
答:不懂此语言,但我可以猜.第一句是赋值语句.值是"真"还是"假", 赋给变量VARC 第一句的表达式是逻辑运算.ZIG是zigzag的意思,即折线,ZIG(3,5)是二维坐标点,或二维数组.REF是参照.如果ZIG(3,5) 大于 折线参照点第一点,并且,折线参照点第二点大于等于第一点的值,并且还满足折线参照点第三点大于...

那位高手解释一下下面关于查找框命令的代码,最好解释下这种格式的...
答:三、那位高手解释一下下面关于查找框命令的代码,最好解释下这种格式的原型,我很模糊---delphi天使 1. InitPos:=Memo1.SelStart+Memomo1.SelStart 是memo里选中的文字的开始位置 Memo1.SelLength 是memo里选中的文字的长度两个加起来就是 选中文字的 结束位os:=Pos(FindDialog1.FindText,Copy(Memt...

...m++和++m的区别在哪里?哪位高手能给解释一下吗?最好能举一个例子...
答:m是变量,m++是指先将m的值进行比较或其他过程,然后将m的值+1赋给m;++m是指先将m的值+1赋给m,然后将赋值后的执行某个过程。

哪位高手帮我解释一下这段语句是什么意思呀?谢谢 if (i!=k&&i!=j&&...
答:如果是c语言的话,是这样的。“!=”表示“不等于”;“&&”表示“与”;后面的那个 /*……*/相当于括号,就是解释说明,真正编程序的时候是不写进去的(也没法写)。然后前面的if跟英语一样,就是“如果”。所以说整个语句的意思是“如果i不等于k,且i不等于j,且j不等于k”后面解释的也就是...

麻烦哪位高手解释一下这个C语言程序中,那个word 有什么用?
答:Word==0表示输入的字符为空,Word!=0表示输入了有效字符。程序统计的是用户连续输入的非空词的个数,直到用户只输入一个回车符时退出

哪位英文高手可以解释一下"It's good to see a girl laughing in English...
答:这里laughing in English的意思有两层:第一,英语不是她的母语。第二,她发笑是因为她理解了英语表达中的某些幽默或滑稽之处,而作为生长在不同文化背景下的人,能够体会欣赏另一种语言因出错或者词不达意造成的笑话,也就难能可贵了。Laugh in a second language 可以参考:http://radio.javaranch...

请解释下面几句话,这是曾国藩写给亲友的信,太难理解了,哪位高手帮帮忙...
答:“近来体察物情,大抵以鄙人用事太久,兵权过重,利权过广,远者震惊,近者疑忌。”最近社会舆论都说我掌权太久,兵权太重,权力太大,不了解的人感到震惊,了解的人对我十分猜忌。”长江三千里几无一船不张鄙人旗帜,外间疑敝处兵权过重,利权过大。盖谓四省厘金络绎输送,各处兵将一呼百诺,其...

请哪位高手帮我翻译一下这段英文,谢谢!!!
答:你在那树端高处摇曳 nearly falling down,with subtle wind.几乎要随悄然微风飘荡而落 Longing to tell the sincerest words,渴望着要诉出我最真挚的话语 but words itself seem to be blank and fragile.但这语言本身却又充满残缺与脆弱 That's the reason ...