首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言經典遞迴/迴圈練習:猴子吃桃、彈跳球、分數級數、費波那契分數

     編輯:關於C

1. 猴子吃桃 (逆向推導)

第 10 天早剩 1 個。第 n 天早剩 x_n,則第 n-1 天早 x_{n-1} = 2*(x_n + 1)。

int peach(int days) {
    int x = 1;
    for (int d = days; d > 1; d--) x = 2*(x+1);
    return x;
}
// 10 天 -> 1534

2. 彈跳球 (幾何級數)

高度 100m,每次彈回一半。第 10 次落地總路程、第 10 次彈高。

void ball(int n) {
    double h = 100, total = 0;
    for (int i = 1; i < n; i++) {
        total += h;      // 落下
        h /= 2;
        total += h;      // 彈起
    }
    total += h; // 第 n 次落下
    printf("總路程: %.4f\n第%d次彈高: %.4f\n", total, n, h/2);
}
// n=10 -> 總路程 299.6094, 彈高 0.0977

3. 分數級數 2/1 + 3/2 + 5/3 + 8/5 + ... (費波那契分數)

分子分母皆為費波那契數列:a_{n+1} = a_n + b_n, b_{n+1} = a_n。

double fib_frac_sum(int n) {
    double a = 2, b = 1, sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += a / b;
        double t = a;
        a = a + b;
        b = t;
    }
    return sum;
}
// n=20 -> 32.660261

4. 通用費波那契迭代

long long fib(int n) {
    long long a = 0, b = 1;
    while (n--) { long long t = a+b; a = b; b = t; }
    return a;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved