使用遞歸實現(xiàn)數(shù)組求和示例分享
思路如下:
給定一個含有n個元素的整型數(shù)組a,求a中所有元素的和。問題的難點(diǎn)在于如何使用遞歸上。如果使用遞歸,則需要考慮如何進(jìn)行遞歸執(zhí)行的開始以及終止條件,首先如果數(shù)組元素個數(shù)為0,那么和為0。同時,如果數(shù)組元素個數(shù)為n,那么先求出前n-1個元素之和,再加上a[n-1]即可。此時可以完成遞歸功能??傊f歸就是在某個函數(shù)的執(zhí)行過程中首先判斷它的終止條件參數(shù),終止條件參數(shù)滿足終止條件則執(zhí)行完畢,終止條件參數(shù)不滿足終止條件則調(diào)用它自身執(zhí)行某項運(yùn)算,比如這里求和就是執(zhí)行加法。凡是遞歸一定都有一個參數(shù)作為終止條件,比如這里是數(shù)組中未加入求和隊列的元素個數(shù),初始為數(shù)組長度。因為終止條件參數(shù)的初始值為數(shù)組長度,所以從數(shù)組的最后一個元素作為求和隊列的第一個元素開始,每遞歸一次就將數(shù)組中的一個元素劃歸到求和隊列中,同時將終止條件參數(shù)減1,直到其未為0,標(biāo)明所有元素都已加入求和隊列,返回求和隊列的值即可。可見遞歸至少有兩個參數(shù),終止條件參數(shù)以及遞歸對象。
代碼如下:
// 1311.cpp : 定義控制臺應(yīng)用程序的入口點(diǎn)。
#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;
}
相關(guān)文章
C# datatable 不能通過已刪除的行訪問該行的信息處理方法
采用datatable.Rows[i].Delete()刪除行后再訪問該表時出現(xiàn)出現(xiàn)“不能通過已刪除的行訪問該行的信息”的錯誤2012-11-11
C#使用StringBuilder實現(xiàn)高效處理字符串
這篇文章主要為大家詳細(xì)介紹了C#如何使用StringBuilder實現(xiàn)高效處理字符串,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01

