今天写了两个比较简单的程序,递归的实现,一个是实现5的阶乘。程序如下
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
public class Recursive {
public int recursive(int n){
if(n==1)
return 1;
else {
return n*recursive(n-1);
}
}
public static void main(String [] args){
Recursive re=new Recursive();
System.out.println(re.recursive(5));
}
}
其实很好理解。5的阶乘其实就是5!=5*4*3*2*1;可以描述成这样表示方法recursive(int n)=n*recursive(n-1)。当n等于5的话,那recursive(5)=5*recursive(4)。根据上面那个公式不就推出recursive(4)=4*recursive(3),以此类推recursive(2)=2*recursive(1),即:recursive(5)=5*4*3*2*recursive(1),那只要我们设当n等1(即recursive(1))等于1时,我们就求出recursive(5)即:5!了。
下面用非递归的方式求阶乘,代码如下,很简单,相信大家都能够很容易看得懂
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
public class NonRecursive {
public int noRecursive(int n){
int mul=1;
for(int i=1;i<=n;i++)
mul=mul*i;
return mul;
}
public static void main(String[] args){
NonRecursive nr=new NonRecursive();
System.out.println(nr.noRecursive(5));
}
}再来一个程序:求Fibonacci数列1、1、2、3、5、8……这样的程序,代码如下,我就不多解释
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
public class Fibonacci {
public int fibonacci(int n){
if(n<=2)
return 1;
else
return fibonacci(n-1)+fibonacci(n-2);
}
public static void main(String[] args){
Fibonacci fi=new Fibonacci();
System.out.println(fi.fibonacci(6));
}
}方法:当i>2时,fibonacii(i)=fibonacii(i-1)+fibonacii(i-2)
非递归方式代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
public class NonFibonacii {
public static void main(String[] args){
System.out.println(f(6));
}
public static int f(int index){
if(index<1)
System.out.println("invalue parameter!");
if(index==1 || index==2){
return 1;
}
else{
int f1=1;
int f2=1;
int f=0;
for(int i=1;i<=index-2;i++){
f=f1+f2;
f2=f1;
f1=f;
}
return f;
}
}
}
大家可以验证一下