計(jì)算數(shù)的定義問(wèn)題
#include <stdio.h>
/* 定義獲取單詞數(shù)量的函數(shù) */
int getWordNumber(int n)
{ ??
? ? if(n == 1)
? ? {
? ? ? ? return 1; ? ?//第一天只會(huì)1個(gè)單詞
? ? }
? ? else{
? ? ? ? return getWordNumber(n+1)*(n/2); ? ? ? //到第天會(huì)的單詞數(shù)量
? ? }
}
int main()
{
? ? int num = getWordNumber(10); ? ? //獲取會(huì)了的單詞數(shù)量
? ? printf("小明第10天記了:%d個(gè)單詞。\n", num);
? ? return 0;
}
為什么?return getWordNumber(n+1)*(n/2); ? ? ? //到第天會(huì)的單詞數(shù)量,這里n-1就有結(jié)果,而n+1為什么沒(méi)有結(jié)果呢?難道是超過(guò)了n的定義數(shù)了嗎?
2015-09-18
這是階乘的遞歸示意圖,僅供參考。練習(xí)中的函數(shù)n==1時(shí),就會(huì)return 1;所以參數(shù)是10時(shí),要不斷的減一,直到n==1時(shí)返回1,n為2時(shí),getWordNumber(2-1)*(2/2)等于1.如果是加一,那么就沒(méi)有數(shù)n==1時(shí),就會(huì)return 1這個(gè)條件作參考,就不能推導(dǎo)出getWordNumber(10)的值了
2015-09-18
請(qǐng)查閱遞歸推導(dǎo)。必須n-1,而不能n+1。