| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 663 人关注过本帖, 1 人收藏
标题:關于monkey遞歸問題﹐求解釋﹗
只看楼主 加入收藏
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:4 
關于monkey遞歸問題﹐求解釋﹗
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
程序分析:采取逆向思维的方法,从后往前推断。
程序代码:
#include <stdio.h>
int f(int n)

 { int z;
   if(n<=9)  z=(f(n+1)+1)*2; /*第一天的桃子数是第2天桃子数加1后的2倍*/
   else      z=1; /*else if(n=10)也是對的﹐但if(n=10)卻是錯的﹐不懂﹐原則上從題意都是相等的﹐但結果就是不同*/
   return z;
  }

 main()

 { printf("%d",f(1));
   getch();
  }
運行結果﹕1534
  對于自定義函數f()中﹐如果我把"else    z=1;"改寫成"if(n=10)  z=1;"為什么結果[f(1)=1]就不對了呢,常規理解else和if(n=10)效果是一樣的啊﹖很糾結呀﹐求解釋﹗
搜索更多相关主题的帖子: monkey 逆向思维 
2011-11-10 10:22
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:5 
逻辑,不是赋值,改成if(n==10)就行了
2011-11-10 10:39
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:15 
n == 10,不是n = 10。
if(n = 10)条件恒成立,自然是错的。写else if(n = 10)你觉得是对的原因在于else实现的条件选择,后面的条件恒成立。

另外,这题可以找到一个简单的公式。设第n天剩1个桃子,那么第1天的桃子数量为 f = 2^n + 2^(n-1) - 2。(当n > 20时,这只猴子姓孙)

重剑无锋,大巧不工
2011-11-10 10:42
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
收藏
得分:0 
我暈死﹐我怎么少打了個"="﹐難怪我運行不對哦﹐書寫錯誤﹐下次注意了﹐我說咋地﹐奇怪了﹖徹底暈死﹐居然犯這種低級錯誤呀﹗﹗﹗  謝謝各位解答疑惑﹐thank you﹗
2011-11-10 10:53
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
收藏
得分:0 
呈現資料上的原題目與答案:
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
程序代码:
#include "stdio.h"
#include "conio.h"
main()
{
  int day,x1,x2;
  day=9;
  x2=1;
  while(day>0)
  {
    x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
    x2=x1;
    day--;
  }
  printf("the total is %d\n",x1);
  getch();
}

 
2011-11-10 10:56
快速回复:關于monkey遞歸問題﹐求解釋﹗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042960 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved