递归解决分鱼问题

 

复制代码
#include <iostream>
using namespace std;

/*题目:
A、B、C、D、E5个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡
觉。第二天,A第一个醒来,他将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒
来,也将鱼分为5份,把多余的一条扔掉,拿走自己的一份。c、D、E依次醒来,也按同样的方法拿
鱼。问他们合伙至少捕了多少条鱼?
*/

/*分析
根据题意假设鱼的总数是x,那么第一次每人分到的鱼的数量可用(x一1)巧表示,余下的鱼数为4*
(x-l)巧,将余下的数量重新赋值给x,依然调用(x一1)巧,如果连续5次x一1均能被5整除,则说明最初
的x值便是本题目的解。
*/

int sub(int n)
{
    if (n == 1)
    {
        static int i = 0;
        do
        {
            i++;
        } while (i % 5 != 0);
        return (i + 1);
    }
    else
    {
        int t;
        do
        {
            t = sub(n - 1);
        } while (t % 4 != 0);
        return (t / 4 * 5 + 1);
    }
}

int main()
{
    int total;
    total = sub(5);
    // the total number of fish is 3121
    cout << "the total number of fish is " << total;
    return 0;
}
复制代码

 

posted @   十一的杂文录  阅读(215)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示