猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子。求第一天共摘了多少桃子。
在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。请修改程序并运行,检查结果是否正确。
用不用设参数什么的,还是直接反着做,不懂呀,高手帮忙!

解决方案 »

  1.   

    假设猴子每天吃的桃子是前一天的1/b再多a个,设前一天的桃子数是Xn-1个,今天的是Xn个,
    就有Xn-1 = (Xn+a)*b,设吃了n天,最后一天剩1个,那就可以根据Xn = 1倒推回X1的值。这样就有了如下的代码。如果最后一天剩下的桃子的数目不固定,那么可以将sum的初始值,即最后一天剩下的桃子数当参数传进去。int SumPeach(int a, int b, int n)
    {
        int sum = 1;
        for(int i = 0; i < n; i++)
        {
            sum = (sum + a) * b;
        }
        return sum;
    }p.s. 仅是思路,没测试,楼主可以先试试,看算出来跟实际结果是否相同。
      

  2.   

    是不是这样?
     
           int sum = 1;
            for (int t = 0; t <11; t++)
            {
                sum = (sum) * 2 + 1;
            }
      

  3.   

    int temp = 1;//最后剩的的一个也就是总数
               
               
                //按后往前推算 第10天是1个 第9天是 4个 第8天是 10个 第7天就是22个
                
                // 规律 1 4 10 22 (n*2)+2;
                // 1 2 3 4 5 6 7 8 9 10 
                //1 1*2+2            for (int i = 1; i < 10;i++ )//
                {
                    temp = temp * 2 + 2;
                   
                    
                }
               
                Console.WriteLine(temp.ToString());