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