慕仰103958
2018-11-17 20:21
#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;
}
首先我不理解为什么最终的结果不是19,而是55,你看嘛(10-1)+10=19
其次,他是从那一步开始循环的,且循环的过程,及计算过程是怎么样的?
目前就卡在这
你那样子算就不是递归了,递归就是反复调用自己
我跟你有一样的困惑
这个答案也不是55额
这是我的猜想
因为 n = 10 所以 执行 else 语块,所以再次执行 wing函数 ,又因为wing(10-1=9)+10 = 19,所以再次执行 wing函数的时候 n的初始值
是9,9不等于1,再次执行 else语块,此时 wing(n-1)+n == wing(9-1=8)+19=27 ,所以再次执行 wing函数,而此时的初始值是8 ,继续执行
else 语块,此时 wing(n-1)+n == wing(8-1)+ 27······依次循环直到 n==1
······························································不知道对不对,请点评
C语言入门
926020 学习 · 20793 问题
相似问题