斐波那契序列的基本实现
2011-10-12 19:51
239 查看
import java.util.Stack;
public class StackAndRechurisive {
public static void main(String[] args){
int n = 8;
System.out.println(StackMethod(n));
System.out.println(ForMethod(n));
System.out.println(Fac(n));
}
public static double Fac(int n){
if(n==0)
return 1;
else if(n==1)
return 1;
else
return Fac(n-1)+Fac(n-2);
}
public static double StackMethod(int n){
if(n==0)
return 1;
if(n==1)
return 1;
Stack<Integer> stack = new Stack<Integer>();
int result=0,temp=0;
if(n>=2){
stack.push(n-1);
stack.push(n-2);
n--;
}
while(stack.size()>0){
temp = stack.pop();
if(temp==0)
result+=1;
else if(temp==1)
result+=1;
else{
stack.push(temp-1);
stack.push(temp-2);
}
}
return result;
}
public static double ForMethod(int n){
double[] array = new double[n+1];
array[0]=1;
array[1]=1;
for(int i=2;i<=n;i++)
array[i]= array[i-1]+array[i-2];
return array
;
}
}
说明:最基本的递归,就是反应下你对递归的了解程度【终止条件,迭代】。
栈方式:反应你对递归的理解,函数递归通常都是拿栈来实现的,那当然一般的递归函数你都可以去用栈完成了。
循环方式:因为上面两种都是非常浪费内存空间,并且做了大量的重复用算。因此,采用另开临时空间标记的方式进行了,这样可以记住前面求过的值。
来源:http://shuofenglxy.iteye.com/blog/895152
public class StackAndRechurisive {
public static void main(String[] args){
int n = 8;
System.out.println(StackMethod(n));
System.out.println(ForMethod(n));
System.out.println(Fac(n));
}
public static double Fac(int n){
if(n==0)
return 1;
else if(n==1)
return 1;
else
return Fac(n-1)+Fac(n-2);
}
public static double StackMethod(int n){
if(n==0)
return 1;
if(n==1)
return 1;
Stack<Integer> stack = new Stack<Integer>();
int result=0,temp=0;
if(n>=2){
stack.push(n-1);
stack.push(n-2);
n--;
}
while(stack.size()>0){
temp = stack.pop();
if(temp==0)
result+=1;
else if(temp==1)
result+=1;
else{
stack.push(temp-1);
stack.push(temp-2);
}
}
return result;
}
public static double ForMethod(int n){
double[] array = new double[n+1];
array[0]=1;
array[1]=1;
for(int i=2;i<=n;i++)
array[i]= array[i-1]+array[i-2];
return array
;
}
}
说明:最基本的递归,就是反应下你对递归的了解程度【终止条件,迭代】。
栈方式:反应你对递归的理解,函数递归通常都是拿栈来实现的,那当然一般的递归函数你都可以去用栈完成了。
循环方式:因为上面两种都是非常浪费内存空间,并且做了大量的重复用算。因此,采用另开临时空间标记的方式进行了,这样可以记住前面求过的值。
来源:http://shuofenglxy.iteye.com/blog/895152
相关文章推荐
- 斐波那契序列的递归和非递归实现方法
- Java实现 输出 任意两个数之间的斐波那契序列
- 斐波那契序列的递归和非递归的实现
- 斐波那契序列——递归实现与非递归实现
- Java学习-栈(1)--实现斐波那契序列
- 斐波那契序列的递归和非递归的实现
- 利用python实现二分法和斐波那契序列
- 斐波那契序列的递归和非递归实现方法
- PHP实现斐波那契序列
- 斐波那契序列的实现方法及对比
- 二叉树的基本操作(含遍历算法非递归实现全收录)
- 常用序列的MATLAB实现
- iOS基本动画/关键帧动画/利用缓动函数实现物理动画效果
- 开源框架SDWebImage的基本实现及思想
- 【C++数据结构】几种单链表的模类板实现及基本操作
- 基本排序的实现与性能比较
- Python结合wxPython实现身份证更新换代、显示基本公民信息软件
- 单链表的基本操作实现
- 功夫小子实践开发-基本工具类的分析和实现
- unity3d 实现帧序列精灵动画