標題:
費氏數列的兩種解法
[打印本頁]
作者:
tonyh
時間:
2023-1-6 19:30
標題:
費氏數列的兩種解法
本帖最後由 tonyh 於 2023-5-6 20:16 編輯
1. 遞迴
2. 動態規劃
Java
// 0 1 1 2 3 5 8 ...
public class Ch01 {
Ch01()
{
System.out.println("費氏數列第12項: "+f(12));
System.out.println("費氏數列第23項: "+f(23));
System.out.println("費氏數列第37項: "+f(37));
System.out.println("費氏數列第42項: "+f(42));
}
int f(int n)
{
if(n<2)
return n;
else
return f(n-2)+f(n-1);
}
public static void main(String[] args) {
long start=System.currentTimeMillis();
new Ch01();
long end=System.currentTimeMillis();
System.out.println("花費: "+(end-start)+" 毫秒");
}
}
/*
f(5)
=f(3)+f(4)
=f(1)+f(2)+f(2)+f(3)
=1+f(0)+f(1)+f(0)+f(1)+f(1)+f(2)
=1+0+1+0+1+1+f(0)+f(1)
=1+1+1+1+1=5
*/
複製代碼
// 0 1 1 2 3 5 8 ...
public class Ch02 {
Ch02()
{
long data[]=new long[90];
data[0]=0;
data[1]=1;
for(int i=2; i<90; i++)
data[i]=data[i-2]+data[i-1];
System.out.println("費氏數列第12項: "+data[12]);
System.out.println("費氏數列第23項: "+data[23]);
System.out.println("費氏數列第37項: "+data[37]);
System.out.println("費氏數列第42項: "+data[42]);
System.out.println("費氏數列第59項: "+data[59]);
System.out.println("費氏數列第89項: "+data[89]);
}
public static void main(String[] args) {
long start=System.currentTimeMillis();
new Ch02();
long end=System.currentTimeMillis();
System.out.println("花費: "+(end-start)+" 毫秒");
}
}
複製代碼
C++
#include<bits/stdc++.h>
using namespace std;
int f(int n)
{
if(n<2)
return n;
else
return f(n-2)+f(n-1);
}
int main()
{
cout<<"費氏數列第12項: "<<f(12)<<endl;
cout<<"費氏數列第23項: "<<f(23)<<endl;
cout<<"費氏數列第37項: "<<f(37)<<endl;
cout<<"費氏數列第42項: "<<f(42)<<endl;
cout<<"花費: "<<clock()<<" 毫秒"<<endl;
return 0;
}
複製代碼
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long data[90];
data[0]=0;
data[1]=1;
for(int i=2; i<90; i++)
data[i]=data[i-2]+data[i-1];
cout<<"費氏數列第12項: "<<data[12]<<endl;
cout<<"費氏數列第23項: "<<data[23]<<endl;
cout<<"費氏數列第37項: "<<data[37]<<endl;
cout<<"費氏數列第42項: "<<data[42]<<endl;
cout<<"費氏數列第59項: "<<data[59]<<endl;
cout<<"費氏數列第89項: "<<data[89]<<endl;
cout<<"花費: "<<clock()<<" 毫秒"<<endl;
return 0;
}
複製代碼
作者:
李穎俊
時間:
2023-1-6 20:38
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class P1 {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
P1() throws Exception
{
System.out.println("費氏數列第12項: "+f(12));
System.out.println("費氏數列第23項: "+f(23));
System.out.println("費氏數列第37項: "+f(37));
System.out.println("費氏數列第42項: "+f(42));
}
int f(int n)
{
if(n<2)
return n;
else
return f(n-2)+f(n-1);
}
public static void main(String[] args) throws Exception {
long start=System.currentTimeMillis();
new P1();
long end=System.currentTimeMillis();
System.out.println("花費: "+(end-start)+" 毫秒");
}
}
複製代碼
作者:
劉愷鈞
時間:
2023-1-6 20:43
public class Ch01 {
Ch01()
{
System.out.println("費氏數列第12項: "+f(12));
System.out.println("費氏數列第23項: "+f(23));
System.out.println("費氏數列第37項: "+f(37));
System.out.println("費氏數列第42項: "+f(42));
}
int f(int x)
{
if(x<2)
return x;
else
return f(x-1)+f(x-2);
}
public static void main(String[] args) {
long start=System.currentTimeMillis();
new Ch01();
long end=System.currentTimeMillis();
System.out.println("花費: "+(end-start)+" 毫秒");
}
}
複製代碼
public class Ch01 {
Ch01()
{
long data[]=new long[90];
data[0]=0;
data[1]=1;
for(int i=2;i<90;i++)
{
data[i]=data[i-1]+data[i-2];
}
System.out.println("費氏數列第12項: "+data[12]);
System.out.println("費氏數列第23項: "+data[23]);
System.out.println("費氏數列第37項: "+data[37]);
System.out.println("費氏數列第42項: "+data[42]);
System.out.println("費氏數列第59項: "+data[59]);
System.out.println("費氏數列第89項: "+data[89]);
}
public static void main(String[] args) {
long start=System.currentTimeMillis();
new Ch01();
long end=System.currentTimeMillis();
System.out.println("花費: "+(end-start)+" 毫秒");
}
}
複製代碼
作者:
陳宥穎
時間:
2023-1-6 20:44
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ch02 {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
Ch02() throws Exception, Exception
{
long x[]=new long[90],input;
input=Integer.parseInt(br.readLine());
x[0]=0;
x[1]=1;
for(int i=2; i<x.length; i++)
x[i]=x[i-1]+x[i-2];
System.out.println(x[(int) input]);
}
public static void main(String[] args) throws Exception {
long start=System.currentTimeMillis();
new Ch02();
System.out.println(System.currentTimeMillis()-start+"ms");
}
}
複製代碼
作者:
陳宥穎
時間:
2023-1-6 20:47
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ch02 {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
Ch02() throws Exception, Exception
{
int input;
input=Integer.parseInt(br.readLine());
System.out.println(f(input));
}
int f(int n)
{
if(n<2)
return n;
else
return f(n-2)+f(n-1);
}
public static void main(String[] args) throws Exception {
long start=System.currentTimeMillis();
new Ch02();
long end=System.currentTimeMillis();
System.out.println((end-start)+"ms");
}
}
複製代碼
作者:
董宸佑
時間:
2023-1-6 20:48
package test;
public class test {
test(){
long data[]=new long[90];
data[0]=0;
data[1]=1;
for(int i=2; i<90; i++)
data[i]=data[i-1]+data[i-2];
System.out.println("費氏數列第12項: "+data[12]);
System.out.println("費氏數列第23項: "+data[23]);
System.out.println("費氏數列第37項: "+data[37]);
System.out.println("費氏數列第42項: "+data[42]);
System.out.println("費氏數列第59項: "+data[59]);
System.out.println("費氏數列第89項: "+data[89]);
}
public static void main(String[] args) {
long star=System.currentTimeMillis();
new test();
long end=System.currentTimeMillis();
System.out.println("花費 "+(end-star)+" 毫秒");
}
}
複製代碼
作者:
林祐霆
時間:
2023-1-6 20:56
public class Rickroll {
Rickroll(){
System.out.println("費氏數列第12項: "+func(12));
System.out.println("費氏數列第23項: "+func(23));
System.out.println("費氏數列第37項: "+func(37));
System.out.println("費氏數列第42項: "+func(42));
}
public static void main(String[] args) {
long s=System.currentTimeMillis();
new Rickroll();
long e=System.currentTimeMillis();
System.out.println("使用遞迴的秒數: "+(e-s)+" 毫秒");
}
int func(int n){
if(n<2)
return n;
else
return func(n-2)+func(n-1);
}
}
複製代碼
public class Hi {
Hi(){
long data[]=new long[90];
data[0]=0;
data[1]=1;
for(int i=2;i<90;i++){
data[i]=data[i-2]+data[i-1];
}
System.out.println("費氏數列第12項: "+data[12]);
System.out.println("費氏數列第23項: "+data[23]);
System.out.println("費氏數列第37項: "+data[37]);
System.out.println("費氏數列第42項: "+data[42]);
System.out.println("費氏數列第59項: "+data[59]);
System.out.println("費氏數列第89項: "+data[89]);
}
public static void main(String[] args) {
long s=System.currentTimeMillis();
new Hi();
long e=System.currentTimeMillis();
System.out.println("使用動態規劃的秒數: "+(e-s)+" 毫秒");
}
}
複製代碼
作者:
蘇韋誠
時間:
2023-1-6 20:57
public class ha {
ha() throws Exception
{
System.out.println("費氏數列第12項: "+f(12));
System.out.println("費氏數列第23項: "+f(23));
System.out.println("費氏數列第37項: "+f(37));
System.out.println("費氏數列第42項: "+f(42));
}
int f(int n)
{
if(n<2)
{
return n;
}
else
{
return f(n-2)+f(n-1);
}
}
public static void main(String[] args) throws Exception {
long start=System.currentTimeMillis();
new ha();
long end=System.currentTimeMillis();
System.out.println("花費: "+(end-start)+" 毫秒");
}
}
複製代碼
public class ha {
ha() throws Exception
{
long data[]=new long[90];
data[0]=0;
data[1]=1;
for(int i=2; i<90; i++)
{
data[i]=data[i-2]+data[i-1];
}
System.out.println("費氏數列第12項: "+data[12]);
System.out.println("費氏數列第23項: "+data[23]);
System.out.println("費氏數列第37項: "+data[37]);
System.out.println("費氏數列第42項: "+data[42]);
System.out.println("費氏數列第59項: "+data[59]);
System.out.println("費氏數列第89項: "+data[89]);
}
public static void main(String[] args) throws Exception {
long start=System.currentTimeMillis();
new ha();
long end=System.currentTimeMillis();
System.out.println("花費: "+(end-start)+" 毫秒");
}
}
複製代碼
作者:
洪承廷
時間:
2023-1-6 21:10
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class P1{
long data[]=new long[90];
P1() throws Exception
{
data[0]=0;
data[1]=1;
for(int i=2;i<90;i++)
{
data[i]=data[i-2]+data[i-1];
}
System.out.println("費氏數列第12項: "+data[12]);
System.out.println("費氏數列第23項: "+data[23]);
System.out.println("費氏數列第37項: "+data[37]);
System.out.println("費氏數列第42項: "+data[42]);
System.out.println("費氏數列第59項: "+data[59]);
System.out.println("費氏數列第89項: "+data[89]);
}
public static void main(String[] args) throws Exception{
long start=System.currentTimeMillis();
new P1();
long end=System.currentTimeMillis();
System.out.println("花費: "+(end-start)+" 毫秒");
}
}
複製代碼
public class Ch01 {
Ch01()
{
System.out.println("費氏數列第12項: "+f(12));
System.out.println("費氏數列第23項: "+f(23));
System.out.println("費氏數列第37項: "+f(37));
System.out.println("費氏數列第42項: "+f(42));
}
int f(int n)
{
if(n<2)
return n;
else
return f(n-2)+f(n-1);
}
public static void main(String[] args) {
long start=System.currentTimeMillis();
new Ch01();
long end=System.currentTimeMillis();
System.out.println("花費: "+(end-start)+" 毫秒");
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2