斐波那契数列(精讲)

举报
裴士 发表于 2022/02/21 18:54:04 2022/02/21
【摘要】 典型例题:斐波那契数列斐波那契数列使我们比较常见的一个练习算法的题,而且有很多的解法。斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、…^方法一:package Test;public class demo6 { /** * @param args */ public static void main(String[] args) { // TO...

典型例题:斐波那契数列

斐波那契数列使我们比较常见的一个练习算法的题,而且有很多的解法。

斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、…^

方法一:

package Test;

public class demo6 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
				int num0= 0;
		        int num1= 1;
		        int num2= 1;
		        int num3;
		        int i=3;
		        //输出数列的前两个数
		        System.out.println(num0);
		        System.out.println(num1);
		        System.out.println(num2);
		        //输出数列的第三个数到第十个数
		        while(i<=10){
		            num3 = num1 + num2; //求出第i个数
		            System.out.println(num3);//输出第i个数
		            num1=num2; 
		            num2=num3;
		            i++;
		        }
		    }
		}

斐波那契数列,直观上看就是下一个数是他前两个数的和,所以呈现出0,1,1,2,3,5,8,13……

所以,我们可以直接设置出他的前三个或者是两个数,并且直接设置的数输出出来,后面的数进行一个循环,因为我们已经设置出了前面两个或者三个数了,所以在这里我们要把i跳过我们设置的数。在这里是从3开始的,下一个数是有num1和num2的和算出来的,但是在下一个数是由num2和num3的和构成的,所以在这里我们要把num2的值赋值给num1,把num3的值赋值给num2,并且让i自动增加一个。再重新进行循环,直到到达了循环的终止条件停止。

方法二:

package demo;

public class demo1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(f(10));
		
	}
	public static int f(int n){
		if(n==1||n==2){
			return 1;
			
		}
		return f(n-1)+f(n-2);
	}

}

数学上运用递归算法的思维是:f0=0;f1=1;f2=1;fn=f(n-1)+f(n-2)(n>=2且n属于正整数)

从中我们能有明白,n的临界值就是1或2所以当n=1或n=2的时候递归结束。

同样运用相同的逻辑,把问题分成一个一个的小的问题就如同fn=f(n-1)+f(n-2)一样,不断的缩小问题的范围。最终取得结果。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。