目錄
1、用遞回實作1+2+3+……+10【開胃菜】

2、用遞回求斐波那契數列
例如:1,1,2,3,5……
注:代碼舉例的是第十項斐波那契數
3、小青蛙跳臺階(一次只可以跳1或2個臺階)求小青蛙跳上n個臺階總共有多少種跳法
注:代碼舉例的是四個臺階一共有多少種跳法
4、用遞回法實作漢諾塔問題
1、用遞回實作1+2+3+……+10【開胃菜】(下面越來越難哦)!!!
?
public class TestDemo{
public static int sumAdd(int n){//求1+2+3+...+n
if (n == 1) {
return 1;
}
int sum=n;
sum=sum+sumAdd(n-1);
return sum;
}
public static void main(String[] args){
System.out.println(sumAdd(10));
}
}
?
2、用遞回求斐波那契數列

【斐波那契:前兩項之和等于第三項以此類推】
例如:1,1,2,3,5……
public class TestDemo{
public static int fib(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}
public static void main(String[] args) {
System.out.println(fib(10))
}
}
注:代碼舉例的是第十項斐波那契數
3、小青蛙跳臺階(一次只可以跳1或2個臺階)求小青蛙跳上n個臺階總共有多少種跳法
public class TestDemo{
public static int frogJump(int n){//青蛙跳臺階
if(n==1||n==2){
return n;
}else {
return frogJump(n-1)+frogJump(n-2);
}
}
public static void main(String[] args) {
System.out.println(frogJump(4));
}
}
注:代碼舉例的是四個臺階一共有多少種跳法

4、用遞回法實作漢諾塔問題

public class TestDemo{
public static void move(char p1,char p2){
System.out.print(p1+"->"+p2+";");
}
/**
*
* @param n//代表漢諾塔盤子的個數
* @param p1//代表盤子的起始位置
* @param p2//代表盤子的中轉位置
* @param p3//代表盤子的最終位置
*/
public static void han(int n,char p1,char p2,char p3){
if (n == 1) {
move(p1,p3);
}else {
han(n-1,p1,p3,p2);
move(p1,p3);
han(n-1,p2,p1,p3);
}
}
public static void main(String[] args) {
han(1,'A','B','C');
System.out.println();
han(2,'A','B','C');
System.out.println();
han(3,'A','B','C');
System.out.println();
}
}


轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/413513.html
標籤:其他
下一篇:芯片的底層原理
