java 输入一个整数n,根据n获取Fibonacci数列的第n个值
来源:互联网 发布:python 密度估计 编辑:程序博客网 时间:2024/05/22 08:26
数学基础:
1,1,2,3,5,8,13 and so on
前两位特殊,其余各位符合F(n) = F(n-1)+F(n-2);
首先想到递归,如下:
public static int fibonacci(int n) { if (n <= 0) { return -1; } else if (n == 1 || n == 2) { return 1; } else { return fibonacci(n - 1) + fibonacci(n - 2); } }
private void testFibonacci(){ for (int i = 0; i < 10; i++) { System.out.println("fibonacci i="+i+"--value="+TestAlgorithms.fibonacci(i)); } }
12-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=0--value=-112-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=1--value=112-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=2--value=112-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=3--value=212-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=4--value=312-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=5--value=512-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=6--value=812-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=7--value=1312-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=8--value=2112-12 15:03:15.861 29816-29816/com.example.bxh.sayhello I/System.out: fibonacci i=9--value=34
但有同学说:此法没有保存前面的值,每次计算时都要重复计算前面的值。所以有人提出使用‘迭代’,关于迭代我没(首)啥(次)说(听)的(说)了(衰!).可以百度一下迭代与递归之间的区别。
public static int fibonacci02(int n) { if (n <= 0) { return -1; } else if (n == 1 || n == 2) { return 1; } else { int start = 3; int f = 1;//第1位 int b = 1;//第2位 while (start++ <= n) { //每次循环都把b和f右移一位,最终b就是我们要的值 //当n=3时,只需要执行1次 //当n=4时,移动1次以后要再移动1次 //当n=5时,在上面的基础上再移动1次 b = b + f;//b 变成它右边那一位 f = b - f;//f 变成b之前的值 } return b; } }
结果与第一种方法相同。
0 0
- java 输入一个整数n,根据n获取Fibonacci数列的第n个值
- java实现斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
- 定义Fibonacci数列,输入n,用最快的方法求该数列的第n项
- 求Fibonacci数列的第N个数字
- 输入n,用最快的方法求Fibonacci 数列的第n 项
- 【微软100题】输入n,用最快的方法求Fibonacci数列的第n项
- 求Fibonacci数列的第n项
- 求Fibonacci数列的第n项
- 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
- 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
- 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
- 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
- 要求输入一个整数n,请你输出斐波那契数列的第n项 python实现
- Fibonacci数列第n项的log(n)算法
- 定义Fibonacci数列如下: / 0 n=0 f(n)= 1 n=1 \ f(n-1)+f(n-2) n=2 输入n,用最快的方法求该数列的第n项。
- 19.定义Fibonacci数列,输入n,用最快的方法求该数列的第n项
- java 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下
- Java实现:n个正整数,将它们连接成一排,组成一个最大的多位整数。(输入:n(n个整数),依次输入n个整数)
- java 判断字符串全为汉字 提取字符串中的汉字
- Optimal Services
- sql 函数字符串拼接函数concat()
- Android仿京东首页画轴效果
- 测试(二)
- java 输入一个整数n,根据n获取Fibonacci数列的第n个值
- robotStudio使用
- SpringMVC+POI下载文件模板和导出Excel
- Flume Error must not generate more than one output value per record field解决
- iOS 10中info.plist 文件 Privacy - Camera Usage Description等
- 移动图形芯片的故事
- SQL Server事务简单使用
- 文本滚动元素 marquee 研究报告
- ServletConfig和ServletContext