捕鱼的JAVA问题,大师们指导指导呗。。。

捕鱼的JAVA问题,大师们指导指导呗。。。,第1张

最少合伙捕到3906条鱼

A醒来发现鱼数是3906

B醒来发现鱼数是781

C醒来发现鱼数是156

D醒来发现鱼数是31

E醒来发现鱼数是6

/**

 * 计算捕鱼

 */

public class Fish {

    public String[] piscators = { "A", "B", "C", "D", "E"}

    public static void main(String[] args) 姿陵锋{

        Fish fish = new Fish()

        for (int i = 0 i < 10000 i++) {

            if (fish.averageFish(fish.piscators.length, i)) {

                fish.averageFish(i)

                break

            }

        }

    }

    /**

     * 判断平均分鱼

     * @param piscatorSize 

     * @param fishNum

     * @return

     */

    public boolean averageFish(int piscatorSize, int fishNum) {

        boolean isAaverage = (fishNum - 1) % piscators.length == 0

        //最后一个人也分成五分 所以piscatorSize > 0 多分一次。

        if (isAaverage && piscatorSize > 0) {

            return averageFish(piscatorSize - 1, (fishNum - 1) / piscators.length)

        }

        return isAaverage

    }

    

    /**

     * 汪乎输出分鱼过程

     * @param fishNum

     */

    public void averageFish(int fishNum) {

        迹晌System.out.println("最少合伙捕到"+ fishNum + "条鱼")

        for (int i = 0 i < piscators.length i++) {

            System.out.println(piscators[i] + "醒来发现鱼数是" + fishNum)

            fishNum = (fishNum - 1) / piscators.length

        }

    }

}

首先你要明白sub(n)表示的是第n个人醒来弊腔的鱼数目,所以可以得到sub(n)-[sub(n)-1]/5-1=sub(n-1)

也就是sub(n)=sub(n-1)/4*5+1然后需要确定的是sub(n-1)必须满足sub(n-1)%4==0

然后就反复调用t=sub(n-1),直到找到合适值,t第一次调用的值是6,然后是11,16.。。。。static int i保证在原有基础上加

也早陆就是租睁衫说t的取值范围也就是

f (n == 1) /*当n等于1时递归结束*/

{

static int i = 0

do

{

i++

}

while (i % 5 != 0)

return (i + 1)

t=i+1t={"6,11,16,21,26....................."} 依次遍历找到合适值

语言表达能力比较差,希望你能明白


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12283196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存