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

C語言猴子吃桃遞迴/迭代實作:逆向推導第1天摘多少桃

     編輯:關於C

遞迴關係

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

迭代實作 (推薦)

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

遞迴實作

int peaches_rec(int day, int curr) {
    if (day == 1) return curr;
    return peaches_rec(day - 1, 2 * (curr + 1));
}
// 呼叫: peaches_rec(10, 1)

通用化:第 n 天剩 m 個

int peaches_general(int total_days, int last_day_remain) {
    int x = last_day_remain;
    for (int d = total_days; d > 1; d--)
        x = 2 * (x + 1);
    return x;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved