#include <stdio.h>
/* 定义获取单词数量的函数 */
int getWordNumber(int n)
{
if(n == 1)
{
return 1; //第一天只会1个单词
}
else{
return getWordNumber(n-1)+n; //到第天会的单词数量
}
}
int main()
{
int num = getWordNumber(10); //获取会了的单词数量
printf("小明第10天记了:%d个单词。\n", num);
return 0;
}
首先,return是结束这个循环,将值输入到主函数 (下文中getWordNumber用GWN代表)
这个GWN函数有两种结束循坏的方式,一种是n等于1时,符合If语句的条件,输出return 1,说明停止循坏并且将1这个值输入到主函数,然后这里主函数就会输出该值(num=1),一种是n不等于1时,不符合If语句的条件,就会输出else语句的return,而这个return语句后面还有一个GWN(n-1)的函数,这个跟着一起被输入主函数,但此时这个循环并没结束,会继续被自身调用,这就是递归函数,比如,下一个GWN(9),那么这个GWN(9)代表在getWordNumber这个函数中在n=9的情况下继续做循环,最后输出的是GWN(8)+9+10(备注:这里的10是上一次循环中GWN(10-1)+10的10),同理,接下来的GWN(8)也会继续按照这样循环,最后到GWN(n-1)中的n-1=1时,这时就符合if语句的条件,就会输出return 1,这时才代表在else return后的这个GWN(n-1)函数才完全停止循环,而这时在主函数输出的是num=[GWN(1)=1]+2+3+4+5+6+7+8+9=55
本人也是菜鸟一枚,初次作答,以上是我的个人的理解,如有不对,还望大神指正。