斐波那契额序列

斐波那契额函数

import java.util.ArrayList;

public class Fib {
	/*
	 * 斐波那契序列
	 * 递归
	 */
	public static int fib(int n){
		if(n<=0){
			return 0;
		}else if(n==1){
			return 1;
		}else{
			return fib(n-1)+fib(n-2);
		}
	}
	/*
	 * 非递归
	 */
	public static long ffib(int n,ArrayList<Long> fiblist){
		if(n<=0){
			fiblist.add(0l);return 0;
		}else if(n==1){
			fiblist.add(0l);
			fiblist.add(1l);
			return 1;
		}else{
			long f1=0;
			fiblist.add(f1);
			long f2=1;
			fiblist.add(f2);
			long f=0;
			for(int i=2;i<=n;i++){
				f=f1+f2;
				fiblist.add(f);
				f1=f2;
				f2=f;
			}
			return f;
		}
	}
	public static void main(String[] args) {
		ArrayList<Long> fiblist=new ArrayList<Long>();
		Fib.ffib(10, fiblist);
		for(Long l:fiblist){
			System.out.print(l+" ");
		}
	}
}

产生n=10以内的斐波那契序列

时间: 2024-10-30 22:03:23

斐波那契额序列的相关文章

python_实现_斐波那契额函数

在学递归的时候,用递归实现了一个 下面是代码 1 def fib(n): 2 if n >= 3: 3 return fib(n-1)+fib(n-2) 4 else: 5 return 1 6 print(fib(6)) 发现一个很严重的问题:当数字比较小的时候还好,但是当求30以后的数字的时候,就会运行特别长的时间 所以请看下面一种方法 1 while True: 2 def fib(n): 3 result = [1,1] 4 for i in range(n-2): 5 result.a

使用Stream输出斐波纳契元组序列

使用Stream流输出斐波那契数列: Stream.iterate(new int[]{0, 1}, t -> new int[]{t[1],t[0] + t[1]}) .limit(10) .map(t -> t[0]) .forEach(System.out::println); 原文地址:https://www.cnblogs.com/sueyyyy/p/12228960.html

数论--斐波那契额

通项公式: 1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 int main() 5 { 6 double a,n,ans; 7 cin>>n; 8 //n--; //(第一项是0时) 9 a=sqrt(5); 10 ans =(a/5) * (pow( (1+a)/2 ,n) - pow((1-a)/2 ,n)); 11 cout<<ans; 12 return 0; 13 }

dijkstra模板(好像是斐波那契额堆优化,但我为什么看起来像优先队列优化,和spfa一样)

/* Dijkstra的算法思想: 在所有没有访问过的结点中选出dis(s,x)值最小的x 对从x出发的所有边(x,y),更新 dis(s,y)=min(dis(s,y),dis(s,x)+dis(x,y)) */ #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <vector> using namespace std; cons

[Swift]LeetCode842. 将数组拆分成斐波那契序列 | Split Array into Fibonacci Sequence

Given a string S of digits, such as S = "123456579", we can split it into a Fibonacci-like sequence [123, 456, 579]. Formally, a Fibonacci-like sequence is a list F of non-negative integers such that: 0 <= F[i] <= 2^31 - 1, (that is, each

842. 将数组拆分成斐波那契序列

给定一个数字字符串 S,比如 S = "123456579",我们可以将它分成斐波那契式的序列 [123, 456, 579]. 形式上,斐波那契式序列是一个非负整数列表 F,且满足: 0 <= F[i] <= 2^31 - 1,(也就是说,每个整数都符合 32 位有符号整数类型):F.length >= 3:对于所有的0 <= i < F.length - 2,都有 F[i] + F[i+1] = F[i+2] 成立.另外,请注意,将字符串拆分成小块时,

python的递归算法学习(2):具体实现:斐波那契和其中的陷阱

1.斐波那契 什么是斐波那契,斐波那契额就是一个序列的整数的排序,其定义如下: Fn = Fn-1 + Fn-2 with F0 = 0 and F1 = 1 也就是,0,1,1,2,3,5,8,13..... 递归实现: def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2) 非递归实现: def fibi(n): a, b = 0, 1 for i in range(n):

上楼梯问题,斐波那契数列

问题描述: 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法.给定一个正整数int n,请返回一个数,代表上楼的方式数.保证n小于等于100.为了防止溢出,请返回结果Mod 1000000007的值. 算法思路:这道题其实就是斐波那契数列的应用,因为可以走一步,又可以走两步,开始在第一层台阶.所以,上第二层台阶,有1种方法,上第三层台阶,有2种方法,上后一层,可以通过前一层再走1步,前两层再走2步.所以,就是f(x)= f(

斐波那契(递归思想)跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来,所以 F(n) = F(n-1) + F(n-2) 斐波拉契数序列,初始条件 n=1:只能一种方法 n=2:两种 递归一下就好了 public class Solution {    public int JumpFloor(int target) {        if(target <= 0)            return 0;