用递归和普通方法算斐波那契数列(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学习图,分享给大家。好好学习!!