遞歸函數(shù)不太理解
return getWordNumber(n-1)+n
是否可以理解為數(shù)學(xué)中f(n)+f(n+1)
2.這個(gè)函數(shù)是如何進(jìn)行循環(huán)的,控制結(jié)束的是哪一步?
3.是否可以把例題的循環(huán)過程用文字講一下
#include?<stdio.h> /*?定義獲取單詞數(shù)量的函數(shù)?*/ int?getWordNumber(int?n) {??? ????if(n?==?1) ????{ ????????return?1;????//第一天只會(huì)1個(gè)單詞 ????} ????else{ ????????return?getWordNumber(n-1)+n?;???????//到第天會(huì)的單詞數(shù)量 ????} } int?main() { ????int?num?=?getWordNumber(10);?????//獲取會(huì)了的單詞數(shù)量 ????printf("小明第10天記了:%d個(gè)單詞。\n",?num); ????return?0; }
2018-11-17
return getWordNumber(n-1)+n,這一句的意思是數(shù)學(xué)中的f(x)=f(x-1)+x。
你在1.中的代碼只有一句并不能結(jié)束,在原題的例子中,n>1時(shí)會(huì)自動(dòng)在factorial(n)中運(yùn)行factorial(n-1),而factorial(n-1)中又會(huì)運(yùn)行factorial(n-2),直到運(yùn)行到第k層即函數(shù)中不會(huì)再運(yùn)行下一個(gè)函數(shù)為止(也就是n已經(jīng)被逐步減到1為止)。
(題主的代碼和例子不一樣我就拿例子來說)主函數(shù)中n=5,factorial(n)函數(shù)執(zhí)行“else”語(yǔ)句,執(zhí)行else語(yǔ)句時(shí)包含factorial(n-1)即factorial(4).factorial(4)還是執(zhí)行else語(yǔ)句,其中包含factorial(3)就這樣一層一層執(zhí)行直到執(zhí)行factorial(1).factorial(1)執(zhí)行不再執(zhí)行else語(yǔ)句而是else if語(yǔ)句,不再調(diào)用factorial()這個(gè)函數(shù),便不再循環(huán)。之后結(jié)束factorial()中的if進(jìn)入return。即整個(gè)函數(shù)運(yùn)行完畢。
我說的不太明白,希望題主能看懂吧。
2019-08-12
茅塞頓開!