慕粉032
2016-08-15 12:22
#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;
}
多谢一楼的回答,稍微解释一下,
你把10代进去,会得到
getWordNumber(10)=getWordNumber(10-1)+10=getWordNumber(9)+10,这时候
n就变成9了,根据递归函数,再把9代进去,得到
getWordNumber(9)+10=getWordNumber(9-1)+9+10=getWordNumber(8)+10+9,
依次类推,最后是
getWordNumber(1)=1+2+3+4+5+6+7+8+9+10=55
#include <stdio.h>
/* 定义获取单词数量的函数 */
int getWordNumber(int n)
{
if(n == 1)
{
return 1; //第一天只会1个单词
}
else{
int a;(重新定义一个量a)
a=getWordNumber(n-1)+n;
return a ; //到第天会的单词数量(这里把a取得值返回给getwordnumber()函数,这下懂了吧)
}
}
int main()
{
int num = getWordNumber(10); //获取会了的单词数量
printf("小明第10天记了:%d个单词。\n", num);
return 0;
}
#include <stdio.h>
/* 定义获取单词数量的函数 */
int getWordNumber(int n)
{
int xx;
if(n == 1)
{
return 1; //第一天只会1个单词
}
else{
printf("%d\t",n);
xx=getWordNumber(n-1)+n;
printf ("\n%d\t",xx);//到第天会的单词数量
}
return xx;
}
int main()
{
int num = getWordNumber(10); //获取会了的单词数量
printf("小明第10天记了:%d个单词。\n", num);
return 0;
}
getWordNumber(10)=getWordNumber(10-1)+10=getWordNumber(9)+10
getWordNumber(9)=getWordNumber(9-1)+9=getWordNumber(8)+9
getWordNumber(8)=getWordNumber(8-1)+8=getWordNumber(7)+8
getWordNumber(8)=getWordNumber(7-1)+7=getWordNumber(6)+7
getWordNumber(7)=getWordNumber(6-1)+6=getWordNumber(5)+6
getWordNumber(6)=getWordNumber(5-1)+5=getWordNumber(4)+5
getWordNumber(5)=getWordNumber(4-1)+4=getWordNumber(3)+4
getWordNumber(4)=getWordNumber(3-1)+3=getWordNumber(2)+3
getWordNumber(3)=getWordNumber(2-1)+2=getWordNumber(1)+2
getWordNumber(1)=1
getWordNumber(n-1) 是指前几天会的单词数量总和,n是第n天会的单词数量,两者相加就是到第n天所学会的单词数量总和
C语言入门
926019 学习 · 20793 问题
相似问题