A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© donkey2 中级黑马   /  2014-11-12 10:25  /  1529 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 donkey2 于 2014-11-15 10:06 编辑

/*
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少个桃子。
*/

/*
我的分析:设猴子第一天摘下n个,当天吃了n/2 +1 个,第二天 吃了(n/2-1)+1。。。依此类推第十天,只剩一个了。
          从最后一天往回回溯,那样前一天的桃子数量为先加1,再乘以2

1. 只需要知道每天吃当天的一半加1个,因为变成的目的是让计算机帮我们思考,而不是我们自己计算出算式而后写程序。
2. n为偶数,要进行输入控制。

*/

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
//        NSLog(@"Hello, World!");
        int nDay10 = 1;
        int day = 10;
        int number;
        for (; day > 0; day--) {
            number = (number + 1)*2;
        }
        NSLog(@"第一天桃子的数量为 %i",number);
    }
    return 0;
}


遇到的问题:
1. 开始思路有问题,想输入1,从而得到第一天的结果。事实上计算机并不能帮你解方程。
2. 反过来想的话,前一天的数量是加1后乘以2,思路就通了。

2 个回复

倒序浏览
又是一个递归的算法题目;
回复 使用道具 举报
Jeik 发表于 2014-11-12 12:00
又是一个递归的算法题目;

呵呵,我是按照练习顺序来的,估计后面的就会用定义函数的方法来处理了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马