汉诺塔问题 递归
https://blog.csdn.net/bohu83/article/details/95112515
递归代码
public static int sum(int n)
{
if(n==0)
{
return 0;
}
else if(n==1)
{
return 1;
}else
{
return sum(n-1)+n;
}
}
public static void main(String[] args) {
System.out.println(sum(100));
}
汉诺塔问题
package cn.yccj.basics;
public class HannuoiTest {
static int i=0;
public static void hannuoi(int n,String a, String b,String c){
if(n==0){
}else{
hannuoi(n-1,a,c,b);
System.out.println(a+"->"+b);
hannuoi(n-1,c,b,a);
i++;
}
}
public static void main(String[] args) {
hannuoi(6,"A","B","C");
System.out.println(i);
}
}
阶乘
package cn.yccj.basics;
import java.util.Scanner;
public class Diguijiecheng {
public static void main(String[] args) {
Diguijiecheng sc = new Diguijiecheng();
System.out.println("请输入一个正整数");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
System.out.println(sc.jie(n));//调用递归的方法,输出数值
}
int jie(int n) {
if (n == 1 || n == 0) {//终止条件
return 1;
} else {
int sum;
sum = n * jie(n - 1);//相同重复逻辑
return sum;
}
}
}
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,又名黄金分割数列、兔子数列
递推公式为F(n)=F(n-1)+F(n-2),n≥3,F(1)=1,F(2)=1。
https://baike.sogou.com/v267267.htm?fromTitle=%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97
打印方式(一)
递归循环调用函数打印F(n)=F(n-1)+F(n-2)
package cn.yccj.basics;
public class Fblq
{
//建立一个函数,用于计算数列中的每一项
public static int fib(int num) {
//判断:是否是第一个数和第二个数
if(num == 1 || num == 2) {
return 1;
}else {
//循环调用本函数
return fib(num - 2) + fib(num - 1);
}
}
//主函数(程序入口)
public static void main(String[] args) {
//建立一个for循环,用于打印第一个至第十个数字
for(int i = 1;i <= 10;i++) {
//调用函数进行打印
System.out.print(fib(i) + "\t");
}
}
}
打印方式(二)
package cn.yccj.basics;
public class PrintFib {
public static void main(String[] args) {
//建立一个长度为10的数组用于存放数列中的数
int[] arr = new int[10];
//先定义数列中的第一个和第二个数
arr[0] = 1;
arr[1] = 1;
//建立一个for循环,打印数组中的元素
for (int i = 0; i < arr.length; i++) {
//判断:当打印第三个数前,给第三个数赋值
if (i > 1) {
arr[i] = arr[i - 2] + arr[i - 1];
}
System.out.print(arr[i] + "\t");
}
}
}
奉上b站斐波那契视频
https://www.bilibili.com/video/av27168106/