package com.demo.hello;
public class HelloWorld {
//斐波那契数列--递归实现
public static int fibonacci(int index){
if(index<0){
System.out.println("----------参数不能为负数--------");
return -1;
}
if(index==0){
return 0;
}else if (index==1) {
return 1;
}else {
return fibonacci(index-1)+fibonacci(index-2);//index>=2
}
}
//n的阶乘--递归实现
public static int factorial(int n){
if(n<0){
System.out.println("----------参数不能为负数--------");
return -1;
}
if(n==0 || n==1){//0!=1 ,1!=1
return 1;
}else {// n!=n*(n-1)!;
return n*factorial(n-1);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(fibonacci(5));
System.out.println(factorial(5));
}
}
运行结果:
5
120
注意:
定义递归方法时有一条最重要的规定:递归一定要向已知方向递归。
只要一个方法的方法体实现中再次调用了该方法本身,就是递归方法。