33 遞迴計算累加和

2022-06-04 18:51:08 字數 554 閱讀 8913

一. 問題

給定乙個數 n ,用遞迴的手法求出從 1 到 n 的累加和。

1. 例項分析

假設傳入引數 n = 5。

(方法一)高斯公式

1

int gauss_sum(int

n)

利用公式,一次即可算出答案,時間複雜度為 o(1)。

(方法二)迴圈計算

1

int normal_sum(int

n) 6

7return

sum;

8 }

用乙個累加器,從 1 累加到 n ,時間複雜度為 o(n)。

(方法三)遞迴計算

1

int recursion_sum(int

n) 5

6return n + recursion_sum(n - 1

);7 }

這種手法是從後面加到前面,先加 n ,再加 (n - 1),最後一直加到 1 。當 n = 1時,函式把 1 返回,然後逐層返回,直到計算出結果。

3 3 1 遞迴計算

3.3.1 遞迴計算 遞迴函式最常見的示例是計算乙個數的階乘。如果你不熟悉,這裡有乙個簡單的定義 乙個非負數 n 的階乘,當 n 等於 1 或 0 時,等於1 對於更大的 n,等於 n 1 的階乘乘以 n。這個函式的實現,基本上有兩種方式。在 c 中,可以使用 for 迴圈,數字在 2 到 n 之間...

遞迴計算過程和迭代計算過程

這次主要想通過幾個sicp的題目來說明遞迴計算過程和迭代計算過程。1 階乘 遞迴計算過程 define factorial n if n 1 1 factorial n 1 n 迭代計算過程 define fact iter counter result if counter 1 result fa...

C語言 使用迴圈和遞迴計算階乘

使用迴圈和遞迴計算階乘 使用迴圈和遞迴計算階乘 include double fact int num 函式宣告,階乘函式,用於迴圈時呼叫 double ct int num 函式宣告,階乘函式,用於遞迴時呼叫 int main void else printf 請輸入乙個整數 輸入q退出 prin...