JAVA 分橘子问题 递归

日本数学游戏专家中村义作提出的桔子分配问题,父亲如何将2520个桔子公平地通过一系列复杂的交换规则分给六个儿子,最终使每人桔子数量相等。通过递归算法求解每位儿子原始的桔子数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日本著名数学游戏专家中村义作教授提出这样一个问题:父亲将2520个桔子分给六个儿子。分完 后父亲说:“老大将分给你的桔子的1/8给老二;老二拿到后连同原先的桔子分1/7给老三;老三拿到后连同原先的桔子分1/6给老四;老四拿到后连同原先的桔子分1/5给老五;老五拿到后连同原先的桔子分1/4给老六;老六拿到后连同原先的桔子分1/3给老大”。结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔子?


package homework;

import java.util.Scanner;

/*日本著名数学游戏专家中村义作教授提出这样一个问题:父亲将2520个桔子分给六个儿子。
分完 后父亲说:“老大将分给你的桔子的1/8给老二;老二拿到后连同原先的桔子分1/7给老三;
老三拿到后连同原先的桔子分1/6给老四;老四拿到后连同原先的桔子分1/5给老五;老五拿到后
连同原先的桔子分1/4给老六;老六拿到后连同原先的桔子分1/3给老大”。结果大家手中的桔子
正好一样多。问六兄弟原来手中各有多少桔子?
*/
public class homework4 {

	public static void main(String[] args) {
		count(240, 210, 1);
	}

	public static int count(int oldnum, int nextgetnum, int i) {

		if (i > 6) {
			return 0;
		}
		if (i == 1) { // 老大
			oldnum = 240;
			nextgetnum = oldnum / (9 - i); // 老大给老二的橘子数
			System.out.println("第" + i  + "个人原来的橘子数为" + oldnum);
		} else {
			nextgetnum = (oldnum + nextgetnum) / (9 - i);
		}
		int nextOldNum = 0;
		nextOldNum = 2520 / 6 * (8 - i) / (7 - i) - nextgetnum;
		System.out.println("第" + (i + 1) + "个人原来的橘子数为" + nextOldNum);
		i = i + 1;
		return count(nextOldNum, nextgetnum, i);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值