思路如下:
給定一個含有n個元素的整型數組a,求a中所有元素的和。問題的難點在於如何使用遞歸上。如果使用遞歸,則需要考慮如何進行遞歸執行的開始以及終止條件,首先如果數組元素個數為0,那么和為0。同時,如果數組元素個數為n,那么先求出前n-1個元素之和,再加上a[n-1]即可。此時可以完成遞歸功能。總之,遞歸就是在某個函數的執行過程中首先判斷它的終止條件參數,終止條件參數滿足終止條件則執行完畢,終止條件參數不滿足終止條件則調用它自身執行某項運算,比如這里求和就是執行加法。凡是遞歸一定都有一個參數作為終止條件,比如這里是數組中未加入求和隊列的元素個數,初始為數組長度。因為終止條件參數的初始值為數組長度,所以從數組的最后一個元素作為求和隊列的第一個元素開始,每遞歸一次就將數組中的一個元素划歸到求和隊列中,同時將終止條件參數減1,直到其未為0,標明所有元素都已加入求和隊列,返回求和隊列的值即可。可見遞歸至少有兩個參數,終止條件參數以及遞歸對象。
代碼如下:
// 1311.cpp : 定義控制台應用程序的入口點。 // #include "stdafx.h" #include<stdio.h> int GetSum(int *a,int n) { return n == 0 ? 0 : GetSum(a,n - 1) + a[n-1]; } int main() { int a[] = { 3, 6, 8, 2, 1 }; int length = sizeof(a) / sizeof(a[0]); printf("%d\n", GetSum(a, length)); getchar(); return 0; }
效果如圖: