再帰と循環で問題を解く--サルは桃を食べる.
問題を解く–サルが桃を食べる問題
質問:猿は初日に桃を数個摘んで、すぐに半分食べて、また1つ多く食べて、翌朝また残りの桃を半分食べて、また1つ多く食べました.それから毎朝、前日の残りの半分を食べました.10日目の朝まで桃が1つしか残っていませんでした.初日にどれだけの桃を摘んだかを求めます.
ロジックは9日目に半分食べて、また1つ食べて、10日目までまだ1つ残っています.だから9日目の桃の数は:(1+1)*2;そして8日目は((((1+1)*2)*2...だから:int day=1;int peath=0;//桃数サイクル9回{peach=(peach+1)*2;}
再帰:最初は未知数Xで、9日間食べて、最終日に1つ残って、つまり関数の出口が確定して、day==1の時、桃の数1を返します;計算は上のruturn(関数(day+1)*2のようになります.
コード#コード#
再帰版:
至尊カスタマイズ版:数日目に桃を1つ残すことを指定します.初日の探索桃数を算出する再帰時に入力を継続させたくないため、再帰出口の判定数を常に「リフレッシュ」することができないため、クラス内に属性を設定、構造関数を定義する.コンストラクション関数をまだ学んでいない場合は、コメントの注釈を削除し、他のものを削除することができます.
質問:猿は初日に桃を数個摘んで、すぐに半分食べて、また1つ多く食べて、翌朝また残りの桃を半分食べて、また1つ多く食べました.それから毎朝、前日の残りの半分を食べました.10日目の朝まで桃が1つしか残っていませんでした.初日にどれだけの桃を摘んだかを求めます.
ロジックは9日目に半分食べて、また1つ食べて、10日目までまだ1つ残っています.だから9日目の桃の数は:(1+1)*2;そして8日目は((((1+1)*2)*2...だから:int day=1;int peath=0;//桃数サイクル9回{peach=(peach+1)*2;}
再帰:最初は未知数Xで、9日間食べて、最終日に1つ残って、つまり関数の出口が確定して、day==1の時、桃の数1を返します;計算は上のruturn(関数(day+1)*2のようになります.
コード#コード#
int peach=1;
int day=10
for (int i =day; i >1; i--) {
peach=2*(peach+1);
}
System.out.println(peach);
再帰版:
public static int peachNum(int day){
if(day==10) return 1;//
return 2*(peachNum(day+1)+1);
}
至尊カスタマイズ版:数日目に桃を1つ残すことを指定します.初日の探索桃数を算出する再帰時に入力を継続させたくないため、再帰出口の判定数を常に「リフレッシュ」することができないため、クラス内に属性を設定、構造関数を定義する.コンストラクション関数をまだ学んでいない場合は、コメントの注釈を削除し、他のものを削除することができます.
public class EatPeach {
static int num=0;
public EatPeach() {
System.out.println(" N:");
Scanner s=new Scanner(System.in);
this.num=s.nextInt();
}
public static void main(String[] args) {
EatPeach eatPeach=new EatPeach();
System.out.println(peachNum(1));
// int peach=1;
// System.out.println(" N:");
// Scanner s2=new Scanner(System.in);
// int num=s2.nextInt();
// for (int i =num; i >1; i--) {
// peach=2*(peach+1);
// }
// System.out.println(peach);
}
public static int peachNum(int day){
if(day==num) return 1;//
return 2*(peachNum(day+1)+1);
}
}