例子:阶乘
public class Test {
public static void main(String args[]) {
System.out.println(method(5));
}
public static int method (int n) {
if (n==1) return 1;
else return n*method(n-1);
}
}
注意在else return n*method(n-1); 是调用方法的自身,所以如果method(3) 那么当执行method(3)的时候,那就会返回3×method(2),此时这个新的式子会等待method(2)的返回,而method(2)= 2*method(1),等待method(1)的返回,所以递归就是这样形成的。
例子二:Fibonacci 数列
public class Test{
public static void main(String args[]) {
System.out.println(f(5));
}
public static int f(int n) {
if(n==1 || n==2) return 1;
else return f(n-1)+f(n-2);
}
}
运用递归的关键:找到调用自身的方法, 并且设置返回值
运用非递归的方法(for loop)的方法写Fibonacci 数列:
public class test {
public static void main(String args[]){
float f1=1;
float f2=1;
float f=0;
int i;
Scanner scanner=new Scanner(System.in);
System.out.println("Enter the Fibonacci number:");
float number=scanner.nextFloat();
if(number==1 || number==2)
return 0;
else
for(i=0;i<number-2;i++) {
f=f1+f2;
f1=f2;
f2=f;
}
return f;
}

没有评论:
发表评论