1.package cn.bit;
import java.util.Scanner;
//代码示例1 按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)
public class Test1_printNum {
public static void main(String[] args){
System.out.println("请输入数字:");
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
printNum(num);
}
public static void printNum(int num){
if (num>9){
printNum(num /10);
}
System.out.println("打印之后的数字:"+num % 10);
}
}
2.package cn.bit;
//代码示例2 递归求 1 + 2 + 3 + ... + 10
//递归结束条件;递归规则(sum(10)=>10+sum(9))
public class Test2_sum {
public static void main(String[] args){
sum(10);
System.out.print(sum(10));
}
public static int sum(int num){
if (num == 1){
return 1;
}
return num+sum(num-1);
}
}
3.package cn.bit;
//写一个递归方法,输入一个非负整数,返回组成它的数字之和. 例如,输入 1729, 则应该返回1+7+2+9,
//它的和是19
public class Test3_sum {
public static void main(String[] args){
System.out.println(sum(1729));
}
public static int sum(int num){
if ( num < 10){
return num;
}
return num % 10+sum(num / 10);
}
}
4.package cn.bit;
//代码示例4 求斐波那契数列的第 N 项 :1 1 2 3 5 8 13 21 34
//优化方法:避免重复计算(空间换时间)
//动态规划:核心本质是“空间换空间”
public class Test4_fib {
public static void main(String[] args){
System.out.println(fib(8));
}
public static int fib(int n){
if (n==1 || n==2){
return n;
}
return fib(n-1)+fib(n-2);
}
}
5.package cn.bit;
//递归求 N 的阶乘
public class Test5_factor {
public static void main(String[] args){
int n=5;
int result=factor(n);
System.out.println(result);
}
public static int factor(int n){
System.out.println("函数开始:n="+n);
if (n==1){
return 1;
}
int result=n * factor(n-1);
System.out.println("函数结束: n = " + n + " result = " + result);
return result;
}
}