herrDeng網內搜尋
自訂搜尋
Ads
訂閱:
張貼留言 (Atom)
熱門文章
-
url="https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date=20220330&stockNo=2330"
-
教育部為提昇全民資安素養與電腦防護能力,本部於101年9月5日至11月5日舉辦「全民資安素養自我評量」活動,請在活動期間內踴躍上網檢測資訊安全素養認知程度,並有機會參與抽獎,詳情請參閱活動網站(網址: https://isafe.moe.edu.tw/event
-
python pandas對黃金、外匯匯率的爬蟲練習,並使用matplotlib.pyplot的函數plot, scatter做資料視覺化處理,採用numpy的統計函數,分析黃金價格波動與歐元走勢的關聯。
-
Python C C++ 2 pointer速解Leetcode 2337 Move Pieces to Obtain a String 多日Leetcode的問題都可用2-pointer法來解,今日2337. Move Pieces to Obtain a String也不例...
-
你會用C的算子sizeof?
63 則留言:
1.
Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
但在計算累計耗費時間時,也有人會用Reset→Start→Stop→加總→…這樣的方法來做。但這樣的做法會比較耗時,求得的值也會有誤差。
2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)return n;
else return f0(n - 1) + f0(n - 2);
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] =f[i - 1] +f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)" + answer);
Console.WriteLine("loop計算"+(sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n]= ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch 可以測量一個時間間隔的運行時間,也可以測量多個時間間隔的總運行時間。
一般用來測量代碼執行所用的時間或者計算性能數據,
在優化代碼性能上可以使用Stopwatch來測量時間。
程式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n]= ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0]=0;f[1]=1;
for (int i=2;i<=n;i++)
f[i]=f[i-1]+f[i-2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
1.Stopwatch 可以測量一個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。
一般用來測量程式碼執行所用的時間或者計算效能資料,在優化程式碼效能上可以使用Stopwatch來測量時間。
程式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f=new int[100];
static int ff(int n)
{
if (f[n]==0||n==0)
{
if (n == 0 || n == 1) f[n]=n;
else
f[n]=ff(n-1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("array+recursion計算用"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
1.Stopwatch用法
使用的時候需要引用 System.Diagnostics 名稱空間。先呼叫 Start 方法,然後呼叫 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到執行時間(這兩個屬性的區別是前者得到的是TimeSpan例項,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在執行還是已經停止。每次呼叫 Start 時開始累計執行時間計數;每次呼叫 Stop 時結束當前時間間隔測量,並凍結累計執行時間值。 使用 Reset 方法可以清除現有 Stopwatch 例項中的累計執行時間。
2.迴圈法計算費氏數列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace f
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)return n;
else return f0(n - 1) + f0(n - 2);
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f1(45)=" + answer);
Console.WriteLine("loop計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.有記憶的遞迴計算費氏數列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace f
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if(f[n]==0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f1(45)=" + answer);
Console.WriteLine("array+reursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch 可以測量一個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。一般用來測量程式碼執行所用的時間或者計算效能資料。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
static int[]f=new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n-1)+f0(n-2);
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("loop計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
static int[]f=new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n-1)+f0(n-2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n]= ff(n - 1)+ ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
Stopwatch 可以測量一個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。一般用來測量程式碼執行所用的時間或者計算效能資料,在優化程式碼效能上可以使用Stopwatch來測量時間。
使用的時候需要引用 System.Diagnostics 名稱空間。先呼叫 Start 方法,然後呼叫 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到執行時間(這兩個屬性的區別是前者得到的是TimeSpan例項,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在執行還是已經停止。每次呼叫 Start 時開始累計執行時間計數;每次呼叫 Stop 時結束當前時間間隔測量,並凍結累計執行時間值。 使用 Reset 方法可以清除現有 Stopwatch 例項中的累計執行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("遞迴計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
Stopwatch 可以測量一個時間間隔的運行時間,也可以測量多個時間間隔的總運行時間。一般用來測量代碼執行所用的時間或者計算性能數據,在優化代碼性能上可以使用Stopwatch來測量時間。
基本用法
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("遞迴計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n]= ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、
與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,
就可以得到運行的耗費時間。
程式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n]= ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0]=0;f[1]=1;
for (int i=2;i<=n;i++)
f[i]=f[i-1]+f[i-2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n]= ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n]= ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
在程序開發中有時會需要統計一個方法或是一個存儲過程執行了多長時間,比如在做一些方法的性能測試時就需要用到這用的時間統計功能。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int f2(int n)
{
if (n == 0) return 0;
if(n==1)
{
f[n] = 1;
return f[n];
}
if(f[n]==0)
{
f[n]=f2(n-1)+f2(n-2);
}
return f[n];
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
{
f[n] = f[n - 1] + f[n - 2];
}
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(f2(45));
sw.Stop();
Console.WriteLine("用時" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch 可以測量一個時間間隔的運行時間,也可以測量多個時間間隔的總運行時間。一般用來測量代碼執行所用的時間或者計算性能數據,在優化代碼性能上可以使用Stopwatch來測量時間。
2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
static int[]f=new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n-1)+f0(n-2);
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("loop計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n;i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
stopwatch用法
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(f1(45));
sw.Stop();
Console.WriteLine(+sw.ElapsedMilliseconds/1000.0);
Console.Read();
}
}
}
迴圈法計算費氏數列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _00056
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
有記憶的遞迴計算費氏數列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _00056
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int f1(int n)
{
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(f1(45));
sw.Stop();
Console.WriteLine(+sw.ElapsedMilliseconds/1000.0);
Console.Read();
}
}
}
1.
Stopwatch 可以測量一個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。一般用來測量程式碼執行所用的時間或者計算效能資料,在優化程式碼效能上可以使用Stopwatch來測量時間。
2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace T0429
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("loop計算"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
3.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace T0429
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int f2(int n)
{
if (n == 0) return 0;
if(n==1)
{
f[n] = 1;
return f[n];
}
if (f[n]==0)
{
f[n] = f2(n - 1) + f2(n - 2);
}
return f[n];
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f2(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("loop計算"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Start();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)return n;
else return f0(n-1) + f0(n-2);
}
static int ff(int n)
{
if (f[n]==0||n==0)
{
if (n == 0 || n == 1)f[n]=n;
else
f[n]=ff(n-1)+ff(n-2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw =new Stopwatch();
sw.Start();
int answer = ff (45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1用法
Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
但在計算累計耗費時間時,也有人會用Reset→Start→Stop→加總→…這樣的方法來做。但這樣的做法會比較耗時,求得的值也會有誤差。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace 費式係數
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)
return n;
else
return f0(n - 1) + f0(n - 2);
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
{
f[i] = f[i - 1] + f[i - 2];
}
return f[n];
}
static int f2(int n)
{
if (n == 0) return 0;
if (n == 1)
{
f[n] = 1;
return f[n];
}
if (f[n] == 0)
{
f[n] = f2(n - 1) + f2(n - 2);
}
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(f2(45));
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds/1000.0+" sec");
Console.Read();
}
}
}
Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
但在計算累計耗費時間時,也有人會用Reset→Start→Stop→加總→…這樣的方法來做。但這樣的做法會比較耗時,求得的值也會有誤差。
-------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace 費式係數
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)
return n;
else
return f0(n - 1) + f0(n - 2);
}
static int f2(int n)
{
if (n == 0) return 0;
if (n == 1)
{
f[n] = 1;
return f[n];
}
if (f[n] == 0)
{
f[n] = f2(n - 1) + f2(n - 2);
}
return f[n];
}
static int f1(int n)
{
if (n == 0 || n == 1)
return n;
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
{
f[i]=f[i-1]+f[i-2];
}
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(f2(45));
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds / 1000.0 + "sec");
Console.Read();
}
}
}
1.Stopwatch 可以測量一個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。一般用來測量程式碼執行所用的時間或者計算效能資料,在優化程式碼效能上可以使用Stopwatch來測量時間。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace T0429
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)return n;
else return f0(n - 1) + f0(n - 2);
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i-1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("loop計算" +(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace T0429
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)return n;
else return f0(n - 1) + f0(n - 2);
}
static int f2(int n)
{
if (n == 0) return 0;
if (n == 1)
{
f[n] = 1;
return f[n];
}
if (f[n] == 0)
{
f[n] = f2(n - 1) + f2(n - 2);
}
return f[n];
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i-1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f2(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("loop計算" +(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
Stopwatch 可以測量一個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。一般用來測量程式碼執行所用的時間或者計算效能資料,在優化程式碼效能上可以使用Stopwatch來測量時間。
2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)return n;
else return f0(n - 1) + f0(n - 2);
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i-1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("loop計算" +(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
3.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)return n;
else return f0(n - 1) + f0(n - 2);
}
static int f2(int n)
{
if (n == 0) return 0;
if (n == 1)
{
f[n] = 1;
return f[n];
}
if(f[n] == 0)
{
f[n] = f2(n - 1) + f2(n - 2);
}
return f[n];
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i-1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f2(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("loop計算" +(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
1.
使用的時候需要引用 System.Diagnostics 名稱空間。先呼叫 Start 方法,然後呼叫 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到執行時間。(這兩個屬性的區別是前者得到的是TimeSpan例項,後者得到的是毫秒)使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在執行還是已經停止。每次呼叫 Start 時開始累計執行時間計數;每次呼叫 Stop 時結束當前時間間隔測量,並凍結累計執行時間值。 使用 Reset 方法可以清除現有 Stopwatch 例項中的累計執行時間。
2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
static int[]f=new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n-1)+f0(n-2);
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("loop計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _0429
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0 ;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] =f[i - 1] +f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("array+recursion計算用"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Start();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。
2.、3.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1)return n;
else return f0(n - 1) + f0(n - 2);
}
static int f1(int n)
{
if (n == 0 || n == 1)return n;
f[0] = 0;
f[1] = 1;
for(int i=2; i<=n; i++)
{
f[i] = f[i - 1] + f[i - 2];
}
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("迴避計算用"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Start();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.
Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
但在計算累計耗費時間時,也有人會用Reset→Start→Stop→加總→…這樣的方法來做。但這樣的做法會比較耗時,求得的值也會有誤差。
2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
static int[]f=new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n-1)+f0(n-2);
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("loop計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int f2(int n)
{
if (n == 0) return 0;
if (n==1)
{
f[n] = 1;
return f[n];
}
if (f[n] == 0)
{
f[n] = f2(n - 1) + f2(n - 2);
}
return f[n];
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
{
f[i] = f[i - 1] + f[i - 2];
}
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(f1(45));
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds / 1000.0 + "sec");
Console.Read();
}
}
}
1.Stopwatch用法:Stopwatch函数,猜测可能是用来计算一个函数的运行所需时间的
2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
static int[]f=new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n-1)+f0(n-2);
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("loop計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f2(int n)
{
if (n == 0) return 0;
if (n == 1)
{
f[n] = 1;
return f[n];
}
if (f[n] ==0)
{
f[n] = f2(n - 1) + f2(n - 2);
}
return f[n];
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
{
f[i] = f[i - 1] + f[i - 2];
}
return f[n];
}
static void Main (string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(f1(45));
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds/1000.0 + "sec");
Console.Read();
}
}
}
1.
Stopwatch 實例可以測量一個間隔的已耗用時間,或跨多個間隔的經過時間總計
2.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
static int[]f=new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n-1)+f0(n-2);
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("loop計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
static int[]f=new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n-1)+f0(n-2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n]= ff(n - 1)+ ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch類別使用上,呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,
就可以得到運行的耗費時間。
程式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n]= ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0]=0;f[1]=1;
for (int i=2;i<=n;i++)
f[i]=f[i-1]+f[i-2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 名稱空間。先呼叫 Start 方法,然後呼叫 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到執行時間(這兩個屬性的區別是前者得到的是TimeSpan例項,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在執行還是已經停止。每次呼叫 Start 時開始累計執行時間計數;每次呼叫 Stop 時結束當前時間間隔測量,並凍結累計執行時間值。 使用 Reset 方法可以清除現有 Stopwatch 例項中的累計執行時間。.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("遞迴計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _555
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] != 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine(f0(45));
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0 + "秒"));
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _555
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] != 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine(f0(45));
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0 + "秒"));
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Start();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Start();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Start();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Start();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp4
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] +f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp4
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] +f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n]= ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp4
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] +f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp4
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] +f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp4
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n]!=0 || n==0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] +f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _555
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] != 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine(f0(45));
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0 + "秒"));
Console.Read();
}
}
}
使用的時候需要引用 System.Diagnostics 名稱空間。先呼叫 Start 方法,然後呼叫 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到執行時間(這兩個屬性的區別是前者得到的是TimeSpan例項,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在執行還是已經停止。每次呼叫 Start 時開始累計執行時間計數;每次呼叫 Stop 時結束當前時間間隔測量,並凍結累計執行時間值。 使用 Reset 方法可以清除現有 Stopwatch 例項中的累計執行時間。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int [] f = new int[100];
static int f0(int n)
{
if (f[n] == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] == 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else
f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("array+recursion計算用"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _555
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] != 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine(f0(45));
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0 + "秒"));
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _555
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] != 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine(f0(45));
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0 + "秒"));
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _555
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] != 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine(f0(45));
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0 + "秒"));
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _555
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] != 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine(f0(45));
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0 + "秒"));
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace _555
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int ff(int n)
{
if (f[n] != 0 || n == 0)
{
if (n == 0 || n == 1) f[n] = n;
else f[n] = ff(n - 1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine(f0(45));
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0 + "秒"));
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1. Stopwatch用法
使用的時候需要引用 System.Diagnostics 命名空間。先調用 Start 方法,然後調用 Stop 方法,最後使用 Elapsed 屬性或者使用 ElapsedMilliseconds 屬性得到運行時間(這兩個屬性的區別是前者得到的是TimeSpan實例,後者得到的是毫秒)。使用 IsRunning 可以確定 Stopwatch 的當前狀態是正在運行還是已經停止。每次調用 Start 時開始累計運行時間計數;每次調用 Stop 時結束當前時間間隔測量,並凍結累計運行時間值。 使用 Reset 方法可以清除現有 Stopwatch 實例中的累計運行時間。
2. 迴圈法計算費氏數列&3.記憶的遞迴計算費氏數列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static int f2(int n)
{
if (n == 0) return 0;
if (n == 1)
{
f[n] = 1;
return f[n];
}
if (f[n] == 0)
{
f[n] = f2(n - 1) + f2(n - 2);
}
return f[n];
}
static int f1(int n)
{
if (n == 0 || n == 1) return n;
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++)
{
f[i] = f[i - 1] + f[i - 2];
}
return f[n];
}
static void Main(String[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(f2(45));
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds/1000.0);
Console.Read();
}
}
}
1. Stopwatch 可以測量一個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。一般用來測量程式碼執行所用的時間或者計算效能資料,在優化程式碼效能上可以使用Stopwatch來測量時間。
程式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f=new int[100];
static int ff(int n)
{
if (f[n]==0||n==0)
{
if (n == 0 || n == 1) f[n]=n;
else
f[n]=ff(n-1) + ff(n - 2);
}
return f[n];
}
static int f1(int n)
{
f[0] = 0;f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)="+answer);
Console.WriteLine("array+recursion計算用"+(sw.ElapsedMilliseconds/1000.0)+"秒");
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
1. Stopwatch用法
Stopwatch是Diagnostics方法裡的其中一種類別,Stopwatch提供一組方法和屬性,可以使用這些方法和屬性,精確地測量已耗用時間,Stopwatch可以設定以什麼方式計時,可設定計時開始與結束。
比如用Stopwatch計算費氏數列的計算時間,用法如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;//提供類別,允許您與系統處理序 (Process)、事件記錄檔和效能計數器互動。
namespace fib
{
class Program
{
static int[] f = new int[100];//叫出100個陣列
static int f0(int n)//原始費式數列算法
{
if (n == 0 || n == 1) return n;
else return f0(n - 1) + f0(n - 2);
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();//呼叫Diagnostics方法
sw.Start();
int answer = f0(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("迴圈計算用" + sw.ElapsedMilliseconds / 1000.0 + "秒");//以毫秒為單位,設定計數方式
Console.Read();
}
}
}
2. 迴圈法計算費氏數列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;//提供類別,允許您與系統處理序 (Process)、事件記錄檔和效能計數器互動。
namespace fib
{
class Program
{
static int[] f = new int[100];//叫出100個陣列
static int f1(int n)//迴圈算法
{
if (n == 0 || n == 1) return n;
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
{
f[i] = f[i - 1] + f[i - 2];
}
return f[n];//回傳值
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();//呼叫Diagnostics方法
sw.Start();
int answer = f1(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("迴圈計算用" + sw.ElapsedMilliseconds / 1000.0 + "秒");//以毫秒為單位,設定計數方式
Console.Read();
}
}
}
3. 有記憶的遞迴計算費氏數列
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;//提供類別,允許您與系統處理序 (Process)、事件記錄檔和效能計數器互動。
namespace fib
{
class Program
{
static int[] f = new int[100];//叫出100個陣列
static int f2(int n)//有記憶的遞迴算法
{
if (n == 0) return 0;
if (n == 1)
{
f[n] = 1;
}
if (f[n] == 0)
{
f[n] = f2(n - 1) + f2(n - 2);
}
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();//呼叫Diagnostics方法
sw.Start();
int answer = f2(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("迴圈計算用" + sw.ElapsedMilliseconds / 1000.0 + "秒");//以毫秒為單位,設定計數方式
Console.Read();
}
}
}
1.
Stopwatch類別重要的成員不外乎StartNew,Start,Stop,Reset,ElapsedTicks,與ElapsedMilliseconds。使用上,只要依序調用Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以獲取運行的耗費時間。逐漸耗費的時間,也只要開始→停止→…→開始→停止→經過的毫秒或經過的計時即可。
但在計算累積耗費時間時,也有人會用重置→開始→停止→加總→…這樣的方法來做。但這樣的做法會比較耗時,求得的值也會有誤差。
2.
使用系統;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用System.Threading.Tasks;
使用System.Diagnostics;
命名空間ConsoleApp1
{
類Program
{
靜態int [] f =新int [100];
static int f0(int n)
{
if(n == 0 || n == 1)返回n;
否則返回f0(n-1)+ f0(n-2);
}
static int f1(int n)
{
if(n == 0 || n == 1)返回n;
f [0] = 0; f [1] = 1;
對於(int i = 2; i <= n; i ++)
f [i] = f [i-1] + f [i-2];
返回f [n];
}
static void Main(string [] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int答案= f1(45);
sw.Stop();
Console.WriteLine(“ f(45)” + answer);
Console.WriteLine(“ loop計算” +(sw.ElapsedMilliseconds / 1000.0)+“秒”);
Console.Read();
}
}
}
1.
Stopwatch類別重要的成員不外乎StartNew,Start,Stop,Reset,ElapsedTicks,與ElapsedMilliseconds。使用上,只要依序調用Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以獲取運行的耗費時間。逐漸耗費的時間,也只要開始→停止→…→開始→停止→經過的毫秒或經過的計時即可。
但在計算累積耗費時間時,也有人會用重置→開始→停止→加總→…這樣的方法來做。但這樣的做法會比較耗時,求得的值也會有誤差。
2.
使用系統;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用System.Threading.Tasks;
使用System.Diagnostics;
命名空間ConsoleApp1
{
類Program
{
靜態int [] f =新int [100];
static int f0(int n)
{
if(n == 0 || n == 1)返回n;
否則返回f0(n-1)+ f0(n-2);
}
static int f1(int n)
{
if(n == 0 || n == 1)返回n;
f [0] = 0; f [1] = 1;
對於(int i = 2; i <= n; i ++)
f [i] = f [i-1] + f [i-2];
返回f [n];
}
static void Main(string [] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int答案= f1(45);
sw.Stop();
Console.WriteLine(“ f(45)” + answer);
Console.WriteLine(“ loop計算” +(sw.ElapsedMilliseconds / 1000.0)+“秒”);
Console.Read();
}
}
}
1.
Stopwatch類別重要的成員不外乎StartNew,Start,Stop,Reset,ElapsedTicks,與ElapsedMilliseconds。使用上,只要依序調用Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以獲取運行的耗費時間。逐漸耗費的時間,也只要開始→停止→…→開始→停止→經過的毫秒或經過的計時即可。
但在計算累積耗費時間時,也有人會用重置→開始→停止→加總→…這樣的方法來做。但這樣的做法會比較耗時,求得的值也會有誤差。
2.
使用系統;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用System.Threading.Tasks;
使用System.Diagnostics;
命名空間ConsoleApp1
{
類Program
{
靜態int [] f =新int [100];
static int f0(int n)
{
if(n == 0 || n == 1)返回n;
否則返回f0(n-1)+ f0(n-2);
}
static int f1(int n)
{
if(n == 0 || n == 1)返回n;
f [0] = 0; f [1] = 1;
對於(int i = 2; i <= n; i ++)
f [i] = f [i-1] + f [i-2];
返回f [n];
}
static void Main(string [] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int答案= f1(45);
sw.Stop();
Console.WriteLine(“ f(45)” + answer);
Console.WriteLine(“ loop計算” +(sw.ElapsedMilliseconds / 1000.0)+“秒”);
Console.Read();
}
}
}
1.
秒錶類別重要的成員不外乎StartNew,Start,Stop,Reset,ElapsedTicks,與ElapsedMilliseconds。使用上,只要依序調用Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以獲取運行的耗費時間。 ,,也只要開始→停止→...→開始→停止→經過的數秒或經過的計時即可。
但在計算累積耗費時間時,也有人會用重置→開始→停止→加總→...這樣的方法來做但這樣的做法會比較耗時,求得的值也會有誤差。
2.
使用系統;
使用System.Collections.Generic;
使用System.Linq的;
使用System.Text;
使用System.Threading.Tasks;
使用System.Diagnostics;
命名空間ConsoleApp1
{
類程序
{
靜態int [] f =新int [100];
static int f0(int n)
{
if(n == 0 || n == 1)返回n;
否則返回f0(n-1)+ f0(n-2);
}
static int f1(int n)
{
if(n == 0 || n == 1)返回n;
f [0] = 0; f [1] = 1;
對於(int i = 2; i <= n; i ++)
f [i] = f [i-1] + f [i-2];
返回f [n];
}
static void Main(字符串[]參數)
{
秒錶sw =新的秒錶();
sw.Start();
int答案= f1(45);
sw.Stop();
Console.WriteLine(“ f(45)” +答案);
Console.WriteLine(“循環計算” +(sw.ElapsedMilliseconds / 1000.0)+“秒”);
Console.Read();
}
}
}
Stopwatch類別重要的成員不外乎StartNew,Start,Stop,Reset,ElapsedTicks,與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。的時間,也只要開始→停止→…→開始→停止→經過的毫秒數或經過的計時即可。
但在計算累積耗費時間時,也有人會用重置→開始→停止→加總→...這樣的方法來做。但是這樣的做法會比較耗時,求得的值也會有誤差
。--------------------------------- -------------------------------------------------- --------
使用系統;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用System.Threading.Tasks;
使用System.Diagnostics;
名稱空間費式係數
{
類Program
{
static int [] f = new int [100];
靜態整數f0(int n)
{
如果(n == 0 || n == 1)
返回n;
否則
返回f0(n-1)+ f0(n-2);
}
static int f2(int n)
{
if(n == 0)返回0;
如果(n == 1)
{
f [n] = 1;
返回f [n];
}
如果(f [n] == 0)
{
f [n] = f2(n-1)+ f2(n-2);
}
return f [n];
}
static int f1(int n)
{
if(n == 0 || n == 1)
返回n;
f [0] = 0;
f [1] = 1;
對於(int i = 2; i <= n; i ++)
{
f [i] = f [i-1] + f [i-2];
}
return f [n];
}
static void Main(string [] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(f2(45));
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds / 1000.0 +“ sec”);
Console.Read();
}
}
}
Stopwatch是診斷方法裡的其中一種類別,Stopwatch提供一組方法和屬性,可以使用這些方法和屬性,精確地測量已耗用時間,Stopwatch可以設定以什麼方式計時,可設定計時開始與結束。
比如用秒錶計算費氏數列的計算時間,用法如下:
使用系統;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用System.Threading.Tasks;
使用System.Diagnostics程序; //提供類別,允許您與系統處理序(工序),事件記錄檔和效能計數器互動。
命名空間FIB
{
類節目
{
靜態INT [] F =新INT [100]; //叫出100個
靜態static int f0(int n)//原始費式數列算法
{
if(n == 0 || n == 1)返回n;
否則返回f0(n-1)+ f0(n-2);
}
static void Main(string [] args)
{
Stopwatch sw = new Stopwatch(); //呼叫診斷方法
sw.Start();
int答案= f0(45);
sw.Stop();
Console.WriteLine(“ f(45)=” + answer);
Console.WriteLine(“迴圈計算用” + sw.ElapsedMilliseconds / 1000.0 +“秒”); //以毫秒為單位,設置計數方式
Console.Read();
}
}
}
2.迴圈法計算費氏數列
使用系統;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用System.Threading.Tasks;
使用
名稱空間fib
{
類Program
{
static int [] f = new int [100]; //叫出100個堆棧
static int f1(int n)//迴圈算法
{
如果(n == 0 || n == 1)返回n;
f [0] = 0; f [1] = 1;
對於(int i = 2; i <= n; i ++)
{
f [i] = f [i-1] + f [i-2];
}
return f [n]; //回傳值
}
static void Main(string [] args)
{
Stopwatch sw = new Stopwatch(); //呼叫診斷方法
sw.Start();
int答案= f1(45);
sw.Stop();
Console.WriteLine(“ f(45)=” + answer);
Console.WriteLine(“迴圈計算用” + sw.ElapsedMilliseconds / 1000.0 +“秒”); //以毫秒為單位,設置計數方式
Console.Read();
}
}
}
3.
使用系統的具有記憶的遞歸計算費氏數列;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用System.Threading.Tasks;
使用System.Diagnostics程序; //提供類別,允許您與系統處理序(工序),事件記錄檔和效能計數器互動。
命名空間FIB
{
類節目
{
靜態INT [] F =新INT [100]; //叫出100個
靜態static int f2(int n)//有記憶的遞歸算法
{
if(n == 0)返回0;
如果(n == 1)
{
f [n] = 1;
}
如果(f [n] == 0)
{
f [n] = f2(n-1)+ f2(n-2);
}
return f [n];
}
static void Main(string [] args)
{
Stopwatch sw = new Stopwatch(); //
調用Diagnostics方法sw.Start();
int答案= f2(45);
sw.Stop();
Console.WriteLine(“ f(45)=” + answer);
Console.WriteLine(“迴圈計算用” + sw.ElapsedMilliseconds / 1000.0 +“秒”); //以毫秒為單位,設置計數方式
Console.Read();
}
}
}
1.Stopwatch類別重要的成員不外乎StartNew、Start、Stop、Reset、ElapsedTicks、與ElapsedMilliseconds。使用上,只要依序呼叫Start→Stop→ElapsedMilliseconds或ElapsedTicks,就可以得到運行的耗費時間。要計算多段程式累計耗費的時間,也只要Start→Stop→…→Start→Stop→ElapsedMilliseconds或ElapsedTicks即可。
2.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
3.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApp1
{
class Program
{
static int[] f = new int[100];
static int f0(int n)
{
if (n == 0 || n == 1) return n;
else return f0(n- 1) + f0(n- 2);
}
static int f1(int n)
{
f[0] = 0; f[1] = 1;
for (int i = 2; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
return f[n];
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int answer = ff(45);
sw.Stop();
Console.WriteLine("f(45)=" + answer);
Console.WriteLine("array+recursion計算用" + (sw.ElapsedMilliseconds / 1000.0) + "秒");
Console.Read();
}
}
}
張貼留言