為什么num = (getPeachNumber(n+1)+1)*2;這里要把getPeachNumber括號進(jìn)去?num = getPeachNumber((n+1)+1)*2不行嘛?
#include <stdio.h>
int getPeachNumber(n)
{
? ? int num; ? ?//定義所剩桃子數(shù)
? ? if(n==10)
? ? {
? ? ? ?return 1; ? ? ? //遞歸結(jié)束條件
? ? }?
? ? else
? ? {
? ? ? ? num = (getPeachNumber(n+1)+1)*2; ? //這里是不應(yīng)該用遞歸呢?
? ? ? ? printf("第%d天所剩桃子%d個\n", ?, ?); //天數(shù),所剩桃子個數(shù)
? ? }
? ? return num;
}
int main()
{
? ? int num = getPeachNumber(1);
? ? printf("猴子第一天摘了:%d個桃子。\n", num);
? ? return 0;
}
2017-08-05
如果不把getPeachNumber括進(jìn)去就會變成: ?num = getPeachNumber(n + 1) + 1*2,在“= + *”這三個運算符中,*的優(yōu)先級最高,所以就會變成: num = getPeachNumber(n +1) + 2,而題目的原意是上一級遞推返回的num值加了一之后在乘以二,之后再打印,所以要把getPeachNumber(n + 1) + 1整個括起來作為一個整體。
緊跟函數(shù)名的括號內(nèi)的值才是輸入函數(shù)的變量值。num = getPeachNumber((n + 1)+ 1)*2等于num = getPeachNumber(n + 2)*2,就是說輸入getPeachNumber的變量是:n+2。而題目的原意是:n+1。
所學(xué)淺顯,如果解釋不夠清楚,請多多包涵,謝謝。