經典遞迴入門題目:給定兩個整數 a 和 b(a ≤ b),使用遞迴計算從 a 到 b(含)所有整數的和。
a > b,區間為空,回傳 0sum(a, b) = a + sum(a+1, b)/*********************************************************************************
* 遞迴練習:a 到 b 的整數和
*********************************************************************************/
#include <iostream>
using namespace std;
static int sumRange(int a, int b);
int main() {
cout << "sum(1, 4) = " << sumRange(1, 4) << endl; // 1+2+3+4=10
return 0;
}
static int sumRange(int a, int b) {
if (a > b)
return 0; // 基本情況:區間無效
return a + sumRange(a + 1, b); // 遞迴分解:當前值 + 剩餘區間和
}
sumRange(1, 4) = 1 + sumRange(2, 4) = 1 + (2 + sumRange(3, 4)) = 1 + 2 + (3 + sumRange(4, 4)) = 1 + 2 + 3 + (4 + sumRange(5, 4)) = 1 + 2 + 3 + 4 + 0 = 10
a > b)a+1 逼近 b)(a+b)*(b-a+1)/2 O(1) 解決,遞迴主要用於練習思維a 到 b 之間所有偶數之和factorial(n) 階乘函數