swing997
2015-09-18 10:31
#include <stdio.h>
/* 定义获取单词数量的函数 */
int getWordNumber(int n)
{
if(n == 1)
{
return 1; //第一天只会1个单词
}
else{
return getWordNumber(n+1)*(n/2); //到第天会的单词数量
}
}
int main()
{
int num = getWordNumber(10); //获取会了的单词数量
printf("小明第10天记了:%d个单词。\n", num);
return 0;
}
为什么 return getWordNumber(n+1)*(n/2); //到第天会的单词数量,这里n-1就有结果,而n+1为什么没有结果呢?难道是超过了n的定义数了吗?
这是阶乘的递归示意图,仅供参考。练习中的函数n==1时,就会return 1;所以参数是10时,要不断的减一,直到n==1时返回1,n为2时,getWordNumber(2-1)*(2/2)等于1.如果是加一,那么就没有数n==1时,就会return 1这个条件作参考,就不能推导出getWordNumber(10)的值了
请查阅递归推导。必须n-1,而不能n+1。
C语言入门
926212 学习 · 20797 问题
相似问题