猴子喫桃原來到底是有1534個桃子還是有3070個桃子?

問題描述:
關於題目的異議,不同題意,答案不同,下面兩種說法:
(這道題目的關鍵就是看清楚第十天到底是怎樣的一個情況)

描述一:1534個桃子

猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個。第二天早上又將剩下的桃子喫掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第十天早上想再喫時,見只剩下一個桃子了。問最初有多少個桃子。

描述一代碼:
遞歸:

#include <stdio.h>

int peach(int n) {
    if (n == 10) return 1;
    return (peach(n + 1) + 1) * 2;
}

void main() {
    printf("%d", peach(1));
}

循環:

#include <stdio.h>

void main() {
    int i, s = 1;
    for (i = 9; i >= 1; i--) {
        s = (s + 1) * 2;
    }
    printf("%d", s);
}

描述一反推:

1天有1534個桃子,猴子吃了一半多一個後剩餘: 766個桃子。
第 2天有 766個桃子,猴子吃了一半多一個後剩餘: 382個桃子。
第 3天有 382個桃子,猴子吃了一半多一個後剩餘: 190個桃子。
第 4天有 190個桃子,猴子吃了一半多一個後剩餘:  94個桃子。
第 5天有  94個桃子,猴子吃了一半多一個後剩餘:  46個桃子。
第 6天有  46個桃子,猴子吃了一半多一個後剩餘:  22個桃子。
第 7天有  22個桃子,猴子吃了一半多一個後剩餘:  10個桃子。
第 8天有  10個桃子,猴子吃了一半多一個後剩餘:   4個桃子。
第 9天有   4個桃子,猴子吃了一半多一個後剩餘:   1個桃子。
到第10天早上想再喫時,見只剩下1個桃子了。

描述二:3070個桃子

猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個。第二天早上又將剩下的桃子喫掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。第十天同樣是吃了前一天的一半加一個,最後剩下一個桃子。問最初有多少個桃子。

描述二代碼:
遞歸:

#include <stdio.h>

int peach(int n) {
    if (n == 11) return 1;
    return (peach(n + 1) + 1) * 2;
}

void main() {
    printf("%d", peach(1));
}

循環:

#include <stdio.h>

void main() {
    int i, s = 1;
    for (i = 10; i >= 1; i--) {
        s = (s + 1) * 2;
    }
    printf("%d", s);
}

描述二反推:

1天有3070個桃子,猴子吃了一半多一個後剩餘:1534個桃子。
第 2天有1534個桃子,猴子吃了一半多一個後剩餘: 766個桃子。
第 3天有 766個桃子,猴子吃了一半多一個後剩餘: 382個桃子。
第 4天有 382個桃子,猴子吃了一半多一個後剩餘: 190個桃子。
第 5天有 190個桃子,猴子吃了一半多一個後剩餘:  94個桃子。
第 6天有  94個桃子,猴子吃了一半多一個後剩餘:  46個桃子。
第 7天有  46個桃子,猴子吃了一半多一個後剩餘:  22個桃子。
第 8天有  22個桃子,猴子吃了一半多一個後剩餘:  10個桃子。
第 9天有  10個桃子,猴子吃了一半多一個後剩餘:   4個桃子。
第10天有   4個桃子,猴子吃了一半多一個後剩餘:   1個桃子。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章