【每天学点算法题10.16】斐波那契数列问题
2013-10-16 23:54
204 查看
问题描述:斐波那契数列是指这样一组数列,1,1,2,3,5,8,13,21.....大家可以看出来规律是,第n个数的数值是它的前面两位数的和。在数学上,斐波那契数列可以这样表示:F(0)=0,F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)。求斐波那契数列第n项数值和前n项的和。
解决办法一:动态规划思想,采用递推的方法。示例代码如下:
解决办法二:采用递归的方法,直接函数f(n)=f(n-1)+f(n-2)。示例代码如下:
解决办法一:动态规划思想,采用递推的方法。示例代码如下:
import java.util.Scanner; /** @author dyoyo90 */ public class Fabonacci{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); System.out.print("Please insert the value of n: "); int n=scanner.nextInt(); System.out.println(getFabonacci(n)); int sum=0; for(int i=1;i<=n;i++){ sum+=getFabonacci(i); } System.out.println(sum); } public static int getFabonacci(int n){ if(n<=2) return 1; int n1=1,n2=1,sum=0; for(int i=0;i<n-2;i++){ sum=n1+n2; n1=n2; n2=sum; } return sum; } }
解决办法二:采用递归的方法,直接函数f(n)=f(n-1)+f(n-2)。示例代码如下:
import java.util.Scanner; /** @author dyoyo90 */ public class Fabonacci{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); System.out.print("Please insert the value of n: "); int n=scanner.nextInt(); System.out.println(getFabonacci(n)); int sum=0; for(int i=1;i<=n;i++){ sum+=getFabonacci(i); } System.out.println(sum); } public static int getFabonacci(int n){ if(n<=2){ return 1; } else{ return getFabonacci(n-1)+getFabonacci(n-2); } } }
相关文章推荐
- 每天一道算法--经典兔子繁殖迭代问题(斐波那契数列)
- 【每天学点算法题10.16】约瑟夫环问题
- 青蛙跳台阶问题,常见面试算法题,斐波那契数列(Fibonacci Sequence)
- 【每天学点算法题10.16】由rand7()生成rand10()
- Java多重循环算法问题:(九九乘法表、打印平行四边形、打印空心菱形、打印菱形、搬砖问题、斐波那契数列、猴子吃桃问题、回文数、1!+2!+...+20!)
- 每天一道算法题(一) (动态规划算法)背包问题Java实现
- 校招准备系列:每天一道算法题(13)-斐波那契数列
- 每天一道算法题(四) (动态规划算法)01背包问题Java实现
- 每天一道算法题(19)——最近公共父节点问题
- 每天一道算法题18 跳台阶问题
- 每天一道算法题(19)——最近公共父节点问题
- 每天一道算法题(23)——约瑟夫环问题
- 斐波那契数列算法优化问题
- 每天一道算法题(23)——约瑟夫环问题
- 剑指offer-算法题练习:part10 矩形覆盖-斐波那契数列问题
- 每天一算法(三)生产着消费者问题
- 每天刷个算法题20160526:BFS解决八数码问题(九宫格问题)
- 【算法】斐波那契数列的效率问题
- 每天一道算法题(36)——8皇后问题
- 每天一道算法题(36)——8皇后问题