首先,先说一下什么是 斐波那契数?
定义:
所谓的斐波那契数就是从第三项开始,每一项都等于前两项之和。
现在说一下递归求解斐波那契数,直接模拟递推公式
递推公式
Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
题目:
1,1,2,3,5,8,13,21,... 称为斐波那契数列
它的第3项是2,它的第100项是多少?
由题意得知要我们求出斐波那契数列的第100位数是多少?
站长起初想到了用for循环来做,递归做起来的话运算速度很慢,没有for循环运算的快,这两种方法站长都写出来了,以供大家参考:
代码:
public class Main {
//递归方法
public static long f(int n) {
if(n == 1 || n == 2) { //斐波那契数第一位和第二位都是1
return 1; //所以无论到第一位还是第二位直接返回1即可
}
return f(n-1)+f(n-2) ;
}
//for循环方法
public static long xfor (int n) {
long a1 = 1, a2 = 1; //给出斐波那契数第一位和第二位
for(int i = 3; i <= n; i++) {
long a3 = a1;
a1 = a2;
a2 = a3 + a1; //后一项等于前两项之和
}
return a2;
}
public static void main(String[] args) {
int n = 20;
System.out.println(xfor(n));
System.out.println(f(n));
}
}
以上是《[JAVA基础算法] 斐波那契数列》的全部内容,
感谢您对程序员阿鑫博客的支持!
版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!