递归就是直接或间接的调用自己,体现了以此类推,重复同样的步骤。
1.三角数 所谓三角数第一项的值为1,第n项的值为n-1项的值加n,如下为java实现三角数,求第n项的值
package com.mathmatic;
/**
*
* @author cdh
*
*/
public class DiGui {
public static int threeMath(int n) {
if(n==1) {
return 1;
}
return threeMath(n-1) + n;
}
public static void main(String[] args) {
System.out.println(DiGui.threeMath(4));
//System.out.println(feiBoNaQi(5));
//hanNuoTa(5, 'A', 'B', 'C');
}
}
2.斐波那契数列 所谓斐波那契数列解释第一项的值为0,第二项的值为1,第n项的值为第n-1项的值加n-2项的值
如下为java实现斐波那契数列,求数列的第n项的值
package com.mathmatic;
/**
*
* @author cdh
*
*/
public class DiGui {
public static int feiBoNaQi(int n) {
if(n == 1) {
return 0;
}else if(n == 2) {
return 1;
}else {
return feiBoNaQi(n-1) + feiBoNaQi(n-2);
}
}
public static void main(String[] args) {
//System.out.println(DiGui.threeMath(4));
System.out.println(feiBoNaQi(5));
//hanNuoTa(5, 'A', 'B', 'C');
}
}
3.汉诺塔问题 所谓汉诺塔就是一共有A B C 三座塔,其中A塔上堆了若干盘子,现在需要借助B塔为中间塔,将A塔上的盘子全部移动
到C塔,其中每次只能移动一个盘子,并且任何一个盘子不能放在比自己小的盘子上面
package com.mathmatic;
/**
*
* @author cdh
*
*/
public class DiGui {
public static void hanNuoTa(int totalPan,char from,char center,char to) {
if(totalPan == 1) {
System.out.println("����" + totalPan + "��" + "��" + from + "�ƶ���" + "��" + to);
}else {
hanNuoTa(totalPan-1,from,to,center);
System.out.println("����" + totalPan + "��" + "��" + from + "�ƶ���" + "��" + to);
hanNuoTa(totalPan-1, center, from, to);
}
}
public static void main(String[] args) {
//System.out.println(DiGui.threeMath(4));
//System.out.println(feiBoNaQi(5));
hanNuoTa(5, 'A', 'B', 'C');
}
}