私は、再帰アルゴリズムを使用して、船員、サル、ココナッツの問題を解決しようとしています。私は与えられた値で問題を解決することができれば、私のプログラムが本当か偽かを言いたい。要するに、問題は、島に猿とココナッツが詰まっている船員がいるということです。一晩中、一人の船員が目を覚まし、ココナッツを取り出して、猿のために残されたココナッツを1本も持って、杭のように並べ替えます。船員は次に杭の1つを埋め、残りの2つの杭を戻します。次の船乗りが目を覚まし、同じことをする(猿のために残っているものと杭を作り、杭の一つを埋め、そして他の杭を戻す)。再帰的ブールメソッドの難易度
私はまた、2人の船員が7個のココナッツを必要とし、3人の船員が79個のココナッツを必要とし、4人のセーラーが1021個のココナッツを必要とすることも知っています。
私のベースケースに問題があります。例えば私が4人のセーラーと81ココナッツを持っている場合、私のプログラムは4%81 = 1であると言います。しかし、この例ではセカンドセーラーがココナッツを分別してしまうと、分別するのに十分ではありません。
何か助力や提案をいただければ幸いです。どうもありがとうございます!
public class test2 {
public static void main(String[] args) {
int sailors=4, sailorsRemaining=sailors, coconuts=81;
testCoconuts(sailors, sailorsRemaining, coconuts);
}//end main method
public static boolean testCoconuts(int sailors, int sailorsRemaining, int coconutsRemaining){
int s = sailors;
int sr = sailorsRemaining;
int cr = coconutsRemaining;
if (cr%s==1 && sr==0) { //if there are enough coconuts to sort, but no sailors
System.out.println("false1");
return false;
}
else if (cr%s==1 && sr!=0) { //if there are enough coconuts and enough sailors to sort
System.out.print("true1");
return true;
}
if (cr%s!=1) { //if there are not enough coconuts to sort
System.out.println("false2");
return false;
}
else return testCoconuts(s, cr - ((cr-1)/s)-1, sr-1); //recursive step
}
}//end class
私はなぜ最初の船乗りが埋葬するために1枚のパイルを持ち、2枚のパイルを組み合わせるのか分からない。私は杭のように思っていたと思った。 –
サルはココナッツ1本またはパイル1本を手に入れますか? –
私はデバッガを使うか、コードをデバッグするために 'System.out.println()'ステートメントを追加することをお勧めします。 –