2013-03-29
展开全部
Fibonnacci整数序列指的是一个递归序列,第一项和第二项都是1,从第三项起为前两项之和。即:1,1,2,3,5,8...这种问题一般是用递归解法解决,你不要递归的话只能借助于堆栈去消除递归,下面我给你提供java语言的解决代码:import java.util.*;public class Fibonnacci{ public static void main(String args[]){ Stack<Interger> stack=new Stack<Interger>(); stack.push(new Interger(1)); stack.push(new Interger(1)); int k=1; while(k<=10) for(int i=1;i<=2;i++){ Interger F1=stack.pop(); int f1=F1.intValue(); Interger F2=stack.pop(); int f2=F2.intValue(); Interger temp=new Interger(f1+f2); System.out.println(""+temp.toString); stack.push(temp); stack.push(F2); k++; } }}
2013-03-29
展开全部
你不要递归的话只能借助于堆栈去消除递归这句话不对 答案为使用堆栈的解决方法。实际上对于斐波拉奇数列可以使用递推和递归两种方法。递归为f(n)=f(n-1)+f(n-2)递推就是int n1,n2,n3;n1=1;n2=1;for(i=2;i<n;i++){n3=n1+n2;n1=n2;n2=n3;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不要递归可以递推啊..
比如你有两个变量n,m记着前两个数a(n-2)和a(n-1),
o记着a(n),那么o=n+m; n=m; m=o;这样就行了.
或是你想做得高级一点可以用矩阵乘法来做,复杂度是O(logN)
比如你有两个变量n,m记着前两个数a(n-2)和a(n-1),
o记着a(n),那么o=n+m; n=m; m=o;这样就行了.
或是你想做得高级一点可以用矩阵乘法来做,复杂度是O(logN)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询