关于斐波那契数列和递归

递归有三个基本点:

1.递归总有一个最简单的情况。即边界或者跳出递归的条件语句;

2.递归总是尝试解决一个规模更小的问题;

3.递归尝试解决的父问题和子问题之间不因该有交集;

 

以下是几个递归代码://斐波那契数列

import edu.princeton.cs.algs4.StdOut;

public class No_1_1_19 {
	public static void main(String[] args)
	{
		for(int n=0;n<10;n++)
		{
			StdOut.println(n+" "+f(n));
			
		}
	}
	
	public static long f(int n)
	{
		if(n==0)
			return 0;
		if(n==1)
			return 1;
		
		return f(n-1)+f(n-2);
	}
}

  运行结果:

 

用一个数组来存储斐波那契数列,并且用循环来实现;

import edu.princeton.cs.algs4.StdOut;

public class No_1_1_19 {
	public static void main(String[] args)
	{
		int n=20;
		
	int[] a = new int[n];
	a[0]=0;
	a[1]=1;
	for(int i=2;i<n;i++)//用循环来实现
	{
		a[i] = a[i-1] + a[i-2];
	}
	
	for(int i=0;i<n;i++)//输出结果
		StdOut.println(i+" "+a[i]);
	
}
}

  结果如下:

 

posted @ 2020-02-06 15:31  清明道人  阅读(407)  评论(0编辑  收藏  举报