1. 程式人生 > >05簡單推導:猴子吃桃

05簡單推導:猴子吃桃

util www. n) d+ 桃子 sum 一個 post left

【題目】
猴子第一天摘下若幹個桃子,當即吃了一半,還不過癮,
又多吃了一個,第二天早上又將剩下的桃子吃掉一半,又多吃了一個。
以後每天早上都吃了前一天剩下的一半零一個。
到第10天早上想再吃時,見只剩下一個桃子了。
求第一天共摘了多少。

【分析】
第10天剩余桃子數量是1
說明猴子已經吃了9天桃子了
後一天桃子的數量是前一天桃子數量的

12?112?1


前一天桃子的數量是後一天桃子數量的(x+1)*2
所以采用逆序倒退的方法來循環求出:
第9天的桃子數量?
第8天的桃子數量?
……
第1天的桃子數量?

import java.util.*;
public class Lanq {


    //1534
    public static void main(String[] args) {
        solve();
    }
    public static void solve() {
        int ans=f2(1534,1);
        System.out.println(ans);
    }
    public static int f(int n)
    {
        if(n==1)return 1;
        else
            return f(n-1)*2+2;
    }
    public static int f2(int sum,int d)//1,1534
    {
        if(sum==1)return d;

        int left=(sum/2)+1;
        sum=sum-left;
        return f2(sum,d+1);

    }
}

  

05簡單推導:猴子吃桃