日期:2014-05-20  浏览次数:20582 次

送分啦!!猴子分桃的问题!!做对有100分拿!!
五只猴子采得一堆桃,它们约定次日早起来分。半夜里,一只猴子偷偷起来,把桃均分成五堆后,发现还多一个,它吃了这桃子,拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃了这个桃子,拿走了其中一堆。第三只,第四只,第五只猴子都依次如此做了。问桃子数最少有多少个?
要求:(1)使用面向对象编程!
          (2)使用递归的方法编写!




------解决方案--------------------
火星回来看看
public class Test {
private static int num = 0;
private static int getRest(int count) {
if (count == 0) {
return 1;
}
if ( (num - 1) % 5 != 0) {
return -1;
}
num = (num - 1) * 4 / 5;
return getRest(count - 1);
}

public static void main(String[] args) {
int count = 5;
for (int sum = 0; true; sum++) {
num = sum;
int rest = getRest(count);
if (rest > 0) {
System.out.println(sum);
break;
}
}
}
}
------解决方案--------------------
#include <stdio.h>
int sub(int n)
{
if(n==1){
static int i=0;
do
{
i++;
}
while(i%5!=0);
//printf( "*%d* ",i);
return(i+1);
}
else
{
int temp;
do
{
temp=sub(n-1);
}
while(temp%4!=0);
//printf( "*%d* ",temp);
return(temp/4*5+1);
}
}
main()
{
int total;
total=sub(5);
printf( " %d\n ",total);
}

结果是3121.
这是c的,谁改成java的看看,算法与语言没关