斐波那契数列的实现
package DiGuistyle; import java.util.Scanner; public class DiGuiZuoYe { /* * 用递归实现斐波那契数列 1、1、2、3、5、8、13、21、.... * * F(1)=1;F(2)=1; * F(N)=F(N-1)+F(N-2); * 第一步,基于递归公式,把乘号改成加号,完成斐波那契递归公式 * 第二部,赋值的N要>=3,嵌入判断 * 第三部,N要从屏幕输入,复习并运用scanner语句。 */ // 定义一个静态方法,实现斐波那契公式 static long F(int N){ // 如果选取的斐波那契的前两个数,都返回“1”,斐波那契的定义 if(N<=2){ return 1; } // 递归 return F(N-1)+F(N-2); } public static void main(String[] args) { // 定义一个int型N int N = 0; System.out.println("请输入你想得到斐波那契的第几个数:"); // 实例对象ShuRu,输入一个数字 Scanner ShuRu=new Scanner(System.in); // 对象的输入属性赋予N变量 N=ShuRu.nextInt(); // 如果N为0,则输出错误,再次输入 // 这个地方还没有完善,需要再次学习完善 √ /*标识里为废弃方案 * if(N==0){ System.out.println("您需要输入大于等于0的整数"); } // 如果输入的不是0,则输出斐波那契公式的得数 else{ System.out.println(F(N)); } */ // 设置for循环,当N等于0时,输出错误提示,并且执行再次输入命令,直到输入的值满足跳出循环条件 for(;N==0;N=ShuRu.nextInt()){ System.out.println("您需要输入大于等于0的整数"); } System.out.print("第"+N+"位的值为:"); System.out.println(F(N)); } }
这次的程序多次调整,废除了标识里面的if老语句,用新for语句实现了输入的数不大于等于1的时候,要求再次输入数值,直到满足条件为止。
输出结果举例如下
请输入你想得到斐波那契的第几个数: 0 您需要输入大于等于0的整数 0 您需要输入大于等于0的整数 9 第9位的值为:34