> 文档中心 > 用递归和普通方法算斐波那契数列(java)

用递归和普通方法算斐波那契数列(java)


用递归和普通方法算斐波那契数列(java)

[斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

前言

题目:一个台阶一共有n级,如果一次跳一级,也可以跳两级2级,求总共有多少总跳法。

提示:以下是本篇文章正文内容,下面案例可供参考

#题目解析
当看到这个题目时便要将这个文字问题转换为数字问题

总台阶数 跳台阶的方法数
1 1
2 2
3 3
4 5
5 8
n (n-1)+(n-2)

这些数据可以在草稿本上得出基本规律,发现和斐波那契数列及其相识。

1.导入包

代码如下(示例):

import java.util.Scanner;/*以下还有为大家普及知识点*/

就是导入 java.util 包下的 Scanner 类,导入后才能使用它。

一.import java.util.Scanner的作用:用来构建Scanner对象。

二.import的作用:

加载已定义好的类或包

导入支持类(可以是JDK基础类或者自己编写的类),可以供本类调用方法和属性。
三 . import导入声明可分为两种导入声明:

1>单类型导入单类型导入单类型导入单类型导入(single-type-import)

2>按需类型导入按需类型导入按需类型导入按需类型导入(type-import-on-demand)

2.读入数据

代码如下(示例):

Scanner scnner=new Scanner(System.in);/*其中用户数入的n为台阶阶梯数*/int n=scnner.nextInt();

3.代码实现

递归方法(java)

代码如下(示例)

package text;import java.util.Scanner;public class text13 {public static void main(String[] args) {Scanner scnner=new Scanner(System.in);/*其中用户数入的n为台阶阶梯数*/System.out.print("请输入总台阶数n=");int n=scnner.nextInt();     System.out.println("总跳法数为"+f(n, 1, 2));}public static int f(int n,int f1,int f2) {   /*通过递归求斐波那契数,求得最终的返回值f2为方法数*/if(n==1||n==2) {return f2;}return f(n-1, f2, f2+f1);}}

结果样例

请输入总台阶数n=10总跳法数为89

4.普通方法

代码如下(示例)

package text;import java.util.Scanner;public class text15 {public static void main(String[] args) {Scanner scnner=new Scanner(System.in);/*其中用户数入的n为台阶阶梯数*/System.out.print("请输入总台阶数n=");int n=scnner.nextInt();int a=0;int a1=2;int a2=3;if(n<4) {System.out.print(n);}else{for(int i=3;i<n;i++) {a=a1+a2;a1=a2;a2=a;}System.out.print("总方法数为:"+a);}}}

结果样例

请输入总台阶数n=10总跳法数为89

总结:

这是学习Java的第三周,懂得知识不多,上了一节算法课,感觉思想好难转变,这也是我在大学第一次在csdn上写文章,在上面写一些东西也有莫大的好处,更容易让自己区理解题目,同时向更多的大佬们学习学习,小菜菜这厢有礼了。

1.下周学习内容:

  • 【】1. 掌握 Java 基本语法
  • 【】2.学会熟练使用构造方法

2.小福利

最近在网上发现了一张比较有趣的Java学习图,分享给大家。好好学习!!
在这里插入图片描述