计算5!
5!=54321(n!=n*(n-1)!)
public class test {
public static void main(String[] args) {
int n=5;
int ret=factor(n);
System.out.println("ret="+ret);
}
public static int factor(int n){
if(n==1){
return 1;
}
return n*factor(n-1);
}
}
依次打印数字每一位
例如1234打印出:1 2 3 4
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
print(n);
}
public static void print(int n){
if(n>9){
print(n/10);//先从后向前剥离,再从前向后打印
}
System.out.print(n%10+" ");
}
}
各位数相加
例如:125:1+2+5=8
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
System.out.println(sum(n));
}
public static int sum(int n){
if(n<10){
return n;
}
return sum(n/10)+n%10;
}
}
递归:自己调用自己,主要找到截至条件
斐波那契数第n项
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
System.out.println(fib(n));
}
public static int fib(int n){
if(n<=2){
return 1;
}
return fib(n-1)+fib(n-2);
}
}
对于这个问题,n的数字越大,程序运行越慢,因为重复的动作太多了
因此,不是所有的问题递归都适合,对于这个问题用循环的方式能避免冗余计算
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
System.out.println(fib(n));
}
public static int fib(int n){
int n1=1;
int n2=1;
int cur =0;
for(int i=3;i<=n;i++){
cur=n1+n2;
n2=n1;
n1=cur;
}
return cur;
}
}