慕瓜0592510
2018-11-17 08:28
return getWordNumber(n-1)+n
是否可以理解为数学中f(n)+f(n+1)
2.这个函数是如何进行循环的,控制结束的是哪一步?
3.是否可以把例题的循环过程用文字讲一下
#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(n-1)+n,这一句的意思是数学中的f(x)=f(x-1)+x。
你在1.中的代码只有一句并不能结束,在原题的例子中,n>1时会自动在factorial(n)中运行factorial(n-1),而factorial(n-1)中又会运行factorial(n-2),直到运行到第k层即函数中不会再运行下一个函数为止(也就是n已经被逐步减到1为止)。
(题主的代码和例子不一样我就拿例子来说)主函数中n=5,factorial(n)函数执行“else”语句,执行else语句时包含factorial(n-1)即factorial(4).factorial(4)还是执行else语句,其中包含factorial(3)就这样一层一层执行直到执行factorial(1).factorial(1)执行不再执行else语句而是else if语句,不再调用factorial()这个函数,便不再循环。之后结束factorial()中的if进入return。即整个函数运行完毕。
我说的不太明白,希望题主能看懂吧。
茅塞顿开!
C语言入门
926020 学习 · 20793 问题
相似问题