基于使用递归推算指定位数的斐波那契数列值的解决方法
昨天面试遇到这样的一道题目:1,1,2,3,5,8,13,21...,请问第30位的值是多少?
//1,1,2,3,5,8,13,21.......第30个是多少?
//使用递归计算指定位数的斐波那契数列值
//Fn=F(n-1)+F(n-2)
public static int GetFibonacciNumber(int index)
{
if(index<0||index==0)throw new Exception("参数不能小于或等于0");
if(index<=2)
{
return 1;
}
else
{
return GetFibonacciNumber(index-1)+GetFibonacciNumber(index-2);
}
}
相关推荐
-
递归形式与非递归形式的斐波那契数列的用法分析
复制代码 代码如下: <SPAN style="FONT-SIZE: 32px">采用递归形式和非递归形式实现斐波那契数列</SPAN> 复制代码 代码如下: #include "stdafx.h"#include <iostream>using namespace std;//递归形式的斐波那契数列int fibonacciRecursion(int n){ if (n == 1 || n ==2) { return 1; }
-
解析分别用递归与循环的方式求斐波那契数列的实现方法
代码如下: 复制代码 代码如下: public class Fibonacci { public static long recursive(int n) { if (n <= 0) return 0; if (n == 1) return 1; return recursive(n - 1) + recursive(n - 2); } public static long loop(int n) { if (n <= 0) return 0; if (n == 1)
-
C语言数据结构递归之斐波那契数列
C语言数据结构递归之斐波那契数列 因为自己对递归还是不太熟练,于是做POJ1753的时候就很吃力,就是翻棋子直到棋盘上所有棋子的颜色一样为止,求最少翻多少次,方法是枚举递归.然后就打算先做另一道递归的题(从数组中取出n个元素的组合),但是同样在递归的问题上不太理解.好吧,于是复习CPP,在第229页的时候,看到了斐波那契数列,回想起之前做过的一道题目,发现可以用递归的方法来做.于是决定优化一下之前的代码. 以下这段摘自<C primer plus> 斐波那契数列的定义如下:第一个和第二个数字都
-
php处理斐波那契数列非递归方法
我自己构思了下,实际上程序来解决这个事情,就是一个偏移量的问题.首先看数列::1.1.2.3.5.8.13.21.34数列的下一个数是前2个数字之和,以此类推. 程序处理的话,实际上就是一个FOR语句,传统FOR语句是for($i=1;$i;$count,$i++),这里的偏移量是$i=$i+1.如果处理这个数列的话,这个偏移量就不是1了,是前1个数字.那么当你for的时候,一个变量记录上一个数字,另外一个记录当前数字,偏移量为这上一个数字,然后在循环中重新赋值,将上一个数字记录成当然循环值,以
-
c#斐波那契数列(Fibonacci)(递归,非递归)实现代码
//Main 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Fibonacci{ class Program { static void Main(string[] args) { Console.WriteLine("Would you like to know which
-
java数学归纳法非递归求斐波那契数列的方法
本文实例讲述了java数学归纳法非递归求斐波那契数列的方法.分享给大家供大家参考.具体如下: Integer能表示的最大值为 2147483647 大概是21.4亿,这里没有考虑溢出情况(当size为983时就会溢出)! import java.util.List; import java.util.ArrayList; /** * @author jxqlovejava * 斐波那契数列 */ public class Fibonacci { public static List<Intege
-
C语言实现斐波那契数列(非递归)的实例讲解
废话不多说,直接上代码 #include <stdio.h> #include <stdlib.h> void f(int n); int main(void) { f(10); return 0; } void f(int n) { if(n==1) { printf("1\n"); return; } if(n==2) { printf("1 1\n"); return; } printf("1 1 "); int*
-
基于使用递归推算指定位数的斐波那契数列值的解决方法
昨天面试遇到这样的一道题目:1,1,2,3,5,8,13,21...,请问第30位的值是多少? 代码实现如下: 复制代码 代码如下: //1,1,2,3,5,8,13,21.......第30个是多少? //使用递归计算指定位数的斐波那契数列值 //Fn=F(n-1)+F(n-2) public static int GetFibonacciNumber(int index) { if(index<0||index==0)throw new Exc
-
C#实现斐波那契数列的几种方法整理
什么是斐波那契数列?经典数学问题之一:斐波那契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--想必看到这个数列大家很容易的就推算出来后面好几项的值,那么到底有什么规律,简单说,就是前两项的和是第三项的值,用递归算法计第50位多少. 这个数列从第3项开始,每一项都等于前两项之和. 斐波那契数列:{1,1,2,3,5,8,13,21...} 递归算法,耗时最长的算法,效率很低. public static long CalcA(int n) { if (n <=
-
java实现斐波那契数列的3种方法
先说说为什么写这个吧,这个完全是由去阿里巴巴面试引起的一次惨目忍睹的血案.去面试的时候,由于面试前天晚上11点钟才到阿里巴巴指定面试城市,找到旅馆住下基本都1点多,加上晚上完全没有睡好,直接导致第二天面试效果很不好(对于那些正在找工作的大虾们不要向小虾一下悲剧,提前做好准备还是很重要滴),面试大概进行了一个多小时(面试结束回去的时候基本走路都快睡着了,悲催!!),面试快结束的时候面试官问的我问题就是关于费波那西数列,当时头脑完全浆糊,只知道要设置三个变量或者用List先初始化,当写到for循环的
-
利用Python实现斐波那契数列的方法实例
今天我们来使用Python实现递归算法求指定位数的斐波那契数列 首先我们得知道斐波那契数列是什么? 斐波那契数列又叫兔子数列 斐波那契数列就是一个数列从第三项开始第三项的值是第一项和第二项的和依次类推 其次我们再来看递归算法是什么? 递归就是如果函数(子程序)包含了对其自身的调用,该函数就是递归的 话不多说上案例: 第一种方法:不使用递归算法 #首先定义一个新的列表来储存最后的结果 new_list = [] # 然后让用户输入指定位数 my_put = int(input("请输入使用递归算法
-
JAVA递归与非递归实现斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起
-
java编程经典案例之基于斐波那契数列解决兔子问题实例
本文实例讲述了java基于斐波那契数列解决兔子问题.分享给大家供大家参考,具体如下: 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? package com.java.recursion; /** * @描述 三种方法实现斐波那契数列 * @项目名称 Java_DataStruct * @包名 com.java.recursion * @类名 Fibonacci * @author chenli
随机推荐
- Delphi实现木马文件传输代码实例
- Oracle数据库集复制方法浅议
- jQuery UI AutoComplete 使用说明
- linux服务器下通过iptables+Denyhost抵御暴力破解的配置方法
- Spring Boot如何使用Spring Security进行安全控制
- Windows虚拟主机与VPS如何实现301重定向(asp.net)
- laravel migrate初学常见错误的解决方法
- php中有关合并某一字段键值相同的数组合并的改进
- Yii实现多按钮保存与提交的方法
- C# Dictionary的使用实例代码
- 使用RecyclerView添加Header和Footer的方法
- mysql #1062 –Duplicate entry '1' for key 'PRIMARY'
- Android基站定位原理及实现代码
- Python中os和shutil模块实用方法集锦
- linux修改目录和文件权限的简单命令解释
- JS 实现随机验证码功能
- Java中常用的6种排序算法详细分解
- c#中文gbk编码查询示例代码
- thinkPHP5 tablib标签库自定义方法详解
- python每次处理固定个数的字符的方法总结