思考題:
如何用遞歸求出數組中的最大項
解:
我們很簡單的把一個擁有n個數字的int類型的數組看成兩個部分,
前n-1項和第n項
在進行比較大小的時候,就直接拿前n-1項和第n項進行比較:
如果第n項比較大,就return出第n項
如果前n-1項比第n項要大,就用遞歸的方法return出前n-1項的最大值
當然這一切都建立在傳入當前函數的數字大於1的情況下,當傳入的數字為1是,這個數字就為最大值
上面的那一句話就作為遞歸的出口使用
int MaxNumber(int number[],int n) { if(n>=1) { if(MaxNumber(number, n-1)>number[n]) return MaxNumber(number, n-1); else return number[n]; } else return number[0]; } int main(){ int a[9]={9,8,7,6,5,4,3,21,2}; int number=MaxNumber(a, 8); printf("%d\t",number); }