關于monkey遞歸問題﹐求解釋﹗
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。程序分析:采取逆向思维的方法,从后往前推断。
程序代码:
#include <stdio.h> int f(int n) { int z; if(n<=9) z=(f(n+1)+1)*2; /*第一天的桃子数是第2天桃子数加1后的2倍*/ else z=1; /*else if(n=10)也是對的﹐但if(n=10)卻是錯的﹐不懂﹐原則上從題意都是相等的﹐但結果就是不同*/ return z; } main() { printf("%d",f(1)); getch(); }運行結果﹕1534
對于自定義函數f()中﹐如果我把"else z=1;"改寫成"if(n=10) z=1;"為什么結果[f(1)=1]就不對了呢,常規理解else和if(n=10)效果是一樣的啊﹖很糾結呀﹐求解釋﹗