斐波那契序列的基本实现
来源:互联网 发布:vissim仿真软件下载 编辑:程序博客网 时间:2024/05/21 06:27
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[n];
}
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[n];
}
}
说明:最基本的递归,就是反应下你对递归的了解程度【终止条件,迭代】。
栈方式:反应你对递归的理解,函数递归通常都是拿栈来实现的,那当然一般的递归函数你都可以去用栈完成了。
循环方式:因为上面两种都是非常浪费内存空间,并且做了大量的重复用算。因此,采用另开临时空间标记的方式进行了,这样可以记住前面求过的值。
来源:http://shuofenglxy.iteye.com/blog/895152
- 斐波那契序列的基本实现
- 斐波那契序列的实现方法及对比
- PHP实现斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- java实现斐波那序列
- 斐波那契序列的递归和非递归的实现
- Java实现 输出 任意两个数之间的斐波那契序列
- 斐波那契序列的递归和非递归实现方法
- Fibonacci(斐波那契)序列的递归算法
- 找最大的斐波那契子序列
- 斐波那契序列 集锦 (转)
- 斐波那契序列集锦(转)
- AjaxPro使用说明
- 《OpenGL编程基础》第二章笔记1
- gSOAP简单多线程服务器程序
- c++返回引用
- 学习 链接
- 斐波那契序列的基本实现
- 最长公共子序列
- JOJ 2580 Welcome to JL2009
- 每日学习笔记(21)
- 一个大小为N的数组,里面是N个整数,怎样去除重复
- iPhone读取和写入plist文件
- 信用卡+失卡保障
- 编译器rvds3.1用incredibuild分布式编译
- 好玩的题目,10个人选4个