#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;}
2 回答
已采纳
凌小天3635910
TA贡献17条经验 获得超13个赞
n(n+1)/2 固然可以做到。但是这个案例的目的应该是为了举例说明递归原理。
getWordNumber(n)=getWordNumber(n-1)+n=getWordNumber(n-2)+n+n-1
=n+(n-1)+(n-2)+……+3+2+getWordNumber(1)
=n+(n-1)+(n-2)+……+3+2+1
这个是这个函数的递归步骤。有的简单的问题可以通过公式法或循环代替的,不过对于例如费波纳茨数列之类的问题显然递归是更好的方法。
- 2 回答
- 0 关注
- 2166 浏览
添加回答
举报
0/150
提交
取消