思路如下:
給定一個含有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;
}
效果如圖:

