一. 問題
給定乙個數 n ,用遞迴的手法求出從 1 到 n 的累加和。
1. 例項分析
假設傳入引數 n = 5。
(方法一)高斯公式
1int gauss_sum(int
n)
利用公式,一次即可算出答案,時間複雜度為 o(1)。
(方法二)迴圈計算
1int normal_sum(int
n) 6
7return
sum;
8 }
用乙個累加器,從 1 累加到 n ,時間複雜度為 o(n)。
(方法三)遞迴計算
1int 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...