public class TestFib
{
public static void main(String[] args)
{
/*
需求:用递归方法计算斐波那契数列第五个数的值
斐波那契数列的规律:
f = 1(n=1,2)
f = f(n-1)+f(n-2)
*/
//System.out.println("第五个数为:"+f(5));
/*
需求:用递归求5的阶乘,并打印输出
*/
//System.out.println("5的阶乘是:"+jiecheng(5));
/*
需求:用非递归方法求第5个斐波那契数
方法:循环及数组
也可以不用数组,分析过后它的规律后,三个变量足矣
*/
System.out.println("斐波那契数列第40个数为:"+f1(40));
}
public static int f(int n)
{
if(n==1 || n==2)
return 1;
else
return f(n-1)+f(n-2);
}
public static long jiecheng(int i)
{
if(i == 1 || i == 0)
return 1;
else
return i*jiecheng(i-1);
}
public static long f1(int n)
{
long f1 = 1;
long f2 = 1;
long f = 0;
if(n==1 || n==2)
return 1;
//增减程序的健壮性
if(n < 1)
{
System.out.println("invaid parameter!");
return -1;
}
//for(int i=0;i<n;i++)//i<n-2;因为前两个数不用循环的,他们的值已是确定值
for(int i=0;i<n-2;i++)
{
f = f1 + f2;
f1 = f2;
f2 = f;
}
return f;
}
}
/*
总结:
1. 0!=1
2.递归与迭代
3.用非递归方法求第5个斐波那契数列
4.斐波那契数列--Fibonacci sequence
5.程序不仅要实现功能,还要保证程序的健壮性(防止非法输入)
6.函数结束的方式
1)return
无参函数一般返回-1值
2)系统自带的exit方法
7.写程序其实就是如下:
把思路转换成代码
思路也就是编程思想
*/
{
public static void main(String[] args)
{
/*
需求:用递归方法计算斐波那契数列第五个数的值
斐波那契数列的规律:
f = 1(n=1,2)
f = f(n-1)+f(n-2)
*/
//System.out.println("第五个数为:"+f(5));
/*
需求:用递归求5的阶乘,并打印输出
*/
//System.out.println("5的阶乘是:"+jiecheng(5));
/*
需求:用非递归方法求第5个斐波那契数
方法:循环及数组
也可以不用数组,分析过后它的规律后,三个变量足矣
*/
System.out.println("斐波那契数列第40个数为:"+f1(40));
}
public static int f(int n)
{
if(n==1 || n==2)
return 1;
else
return f(n-1)+f(n-2);
}
public static long jiecheng(int i)
{
if(i == 1 || i == 0)
return 1;
else
return i*jiecheng(i-1);
}
public static long f1(int n)
{
long f1 = 1;
long f2 = 1;
long f = 0;
if(n==1 || n==2)
return 1;
//增减程序的健壮性
if(n < 1)
{
System.out.println("invaid parameter!");
return -1;
}
//for(int i=0;i<n;i++)//i<n-2;因为前两个数不用循环的,他们的值已是确定值
for(int i=0;i<n-2;i++)
{
f = f1 + f2;
f1 = f2;
f2 = f;
}
return f;
}
}
/*
总结:
1. 0!=1
2.递归与迭代
3.用非递归方法求第5个斐波那契数列
4.斐波那契数列--Fibonacci sequence
5.程序不仅要实现功能,还要保证程序的健壮性(防止非法输入)
6.函数结束的方式
1)return
无参函数一般返回-1值
2)系统自带的exit方法
7.写程序其实就是如下:
把思路转换成代码
思路也就是编程思想
*/