我在java中获得了一项任务,它涉及一个复活节彩蛋游戏,当我给你的鸡蛋开始时它会开始,并且当你剩下几个鸡蛋时就会结束。在比赛的任何阶段,假设你还剩下鸡蛋,那么你可以回馈一些鸡蛋,但你必须遵守以下规则:
•如果n是偶数,那么你可以准确地回馈n / 2个蛋。
•如果n可以被3或4整除,那么你可以将n的后两位数相乘并将其返回 很多鸡蛋。
•如果n可以被5整除,那么你可以准确地给出m个鸡蛋。
•如果n是素数,那么您可以回馈一个鸡蛋。
我必须编写一个名为picnic的函数,如果按照某种顺序应用规则,我们就会返回true;否则为假:
public static boolean picnic(int n, int m) { … }
我的任务是:
a)提供野餐的重复关系(int n,int m)
b)使用递归关系
在Java中实现递归函数c)为野餐开发完整的递归调用树(250,42)
d)这里的递归模式是什么? (尾递归与否?树或线性递归?)
e)此功能是否提醒任何算法设计策略?如果是这样,哪一个?
我已经做了问题a)以此作为答案:
public class EasterEggs {
public static boolean picnic (int n, int m) {
if (n == m)
return true;
else return (picnic(n,m));
}
}
我不确定如何实现递归函数。我尝试了几次,但仍然没有。
问题b和c是我最大的问题,我确定我能弄清楚d和e。有人可以帮我这个吗?并可能告诉我如何实施它?
答案 0 :(得分:1)
在递归关系中,我们不必像您在问题中提到的那样定义类和方法。这是树递归而不是尾递归。 而这个功能让我们想起了回溯设计策略。
对于b)部分我的解决方案是简单而蛮力。
<ul class="list">
<li class="box-wrapper">
<div class="box"></div>
<div class="box"></div>
</li>
<li class="box-wrapper">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</li>
<li class="box-wrapper">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</li>
<li class="box-wrapper">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</li>
<li class="box-wrapper">
<div class="box"></div>
<div class="box"></div>
</li>
</ul>
答案 1 :(得分:0)
你必须:
创建一个表示不同规则的枚举(其中有4个:p)。让我们承认你列举了枚举ERule
使用args
创建递归函数递归函数的退出条件:
如果不满足退出条件,则只需为每个可以应用于当前n的规则调用递归函数(根据您测试的条件在修改后的n值上调用它)。结果是对所有结果的OR语句。
答案 2 :(得分:0)
返回给定数组是否可整除的最佳函数
/* 样本数据
公共类 IsDivisible {
public static void main(String[] args) {
int[] sampleData = { 3, 3, 6, 36 };
int divisible = 3;
int result = isDivisible(sampleData, divisible);
System.out.println(result);
}
static int isDivisible(int[] givenArray, int isDivisible) {
for (int i = 0; i < givenArray.length; i++) {
if ((givenArray[i] % isDivisible) != 0) {
return 0;
}
}
return 1;
}
}