如何用遞歸實現數組求和


思路如下:

給定一個含有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;
}

  效果如圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM