黑马程序员技术交流社区

标题: 经典题目 [打印本页]

作者: 又欠又欠    时间: 2016-4-6 21:24
标题: 经典题目
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只 
    猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 
    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 
    问海滩上原来最少有多少个桃子?
main() 
{int i,m,j,k,count; for(i=4;i<10000;i+=4) { count=0; m=i; 
for(k=0;k<5;k++) { 
  j=i/4*5+1;   i=j; 
  if(j%4==0)    count++;   else    break; } 
  i=m; 
  if(count==4) 
  {printf("%d\n",count);    break;} } }
作者: muzipiao    时间: 2016-4-6 22:57
没看懂你写的啥,这个明显一个递归方法就可以搞定了
假设猴子数量是monkeyNum,函数返回的是桃子总数,方法如下:
  1. int dispartPeaches(int monkeyNum){
  2.     int sum=0;
  3.     if (monkeyNum==1) {
  4.         return 6;//由于求的是最少有多少桃子,最后一个猴子肯定分的是6个(5+1)
  5.     }
  6.     if(monkeyNum>1){
  7.         sum=dispartPeaches(monkeyNum-1)*5+1;
  8.         NSLog(@"sum%d=%d",monkeyNum,sum);
  9.     }
  10.     return sum;
  11. }
复制代码

作者: 最爱舒儿    时间: 2016-4-7 00:32
没看懂                 
作者: 堕落天使    时间: 2016-4-8 06:48
代码写的格式看着也是难懂
作者: 堕落天使    时间: 2016-4-8 06:50
muzipiao 发表于 2016-4-6 22:57
没看懂你写的啥,这个明显一个递归方法就可以搞定了
假设猴子数量是monkeyNum,函数返回的是桃子总数,方法 ...

代码中monkeyNum=1的时候直接return了,这个函数不就结束了,还怎么递归啊?
作者: muzipiao    时间: 2016-4-8 10:19
堕落天使 发表于 2016-4-8 06:50
代码中monkeyNum=1的时候直接return了,这个函数不就结束了,还怎么递归啊?

一只猴子能把桃子分成5份,还多一个,一份肯定最少1个,那最少肯定是6个啊,一只猴子肯定不用递归了,直接算就行了
作者: ySssssssss    时间: 2016-4-8 22:43
感谢分享
作者: 妖精的尾巴_wzn    时间: 2016-5-8 00:11
不懂啊!看不懂!
作者: 简约无处不在    时间: 2016-5-8 00:45
感觉很高深的样子,我要去好好学习!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2