C#語言函式遞迴
一、什麼是函式遞迴?
在計算機語言中,遞迴是指在函式的定義中使用函式自身的方法。藉助遞迴方法,我們可以把一個相對複雜的問題轉化為一個與原問題相似的規模較小的問題來求解,遞迴方法只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的程式碼量。但在帶來便捷的同時,也會有一些缺點:執行效率不太高。
二、遞迴函式的特點
1) 在函式裡呼叫自身;
2) 遞迴函式通常程式碼簡潔清晰;,
3) 遞迴函式會一直呼叫,直到某些條件被滿足,我們稱之為遞迴出口 ;
4) 遞迴函式執行效率較低。
三、走入遞迴函式
已知:
一個數n的階乘,記作:n!,它等於1*2*3*...*n
要求:
用遞迴的思想完成一個函式,該函式用於求某個數的階乘
分析:
用遞迴的方法,也可以理解為n的階乘等於n乘以n-1的階乘:n!=n*(n-1)!
當n=1時,n!=1;
Step1:
定義一個求n的階乘的函式: static int result(int n)
當n=1時,n!=1;
當n>1時,n!=n*(n-1)!
Step2:
將上述分析過程寫成程式碼,則為:
static int result(int n)
{
if (n==1)
return 1;
else
returnn*result(n-1);
}
Step3:
從主函式裡呼叫上述函式,獲取使用者輸入的值,求它的階乘。
static void Main(string[] args)
{
Console.Write("請輸入一個數:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine("這個數的階乘為:"+result(n));
}
四、常見遞迴函式案例
1.求階乘之和
static void Main(string[] args)
{
Console.Write("請輸入一個數:");
int n= int.Parse(Console.ReadLine());
int sum=0;
for(inti=1;i<=n;i++)
sum+=result(i);
Console.WriteLine("這個數的階乘之和為:"+sum);
}
static int result(int n )
{
if (n== 1)
return 1;
else
{return n * result(n - 1); }
}
2.計算n*(n-1)+(n-1)(n-2)+(n-2)*(n-3)+……+2*1數列的結果
static void Main(string[] args)
{
Console.Write("請輸入一個數(大於1):");
int n= int.Parse(Console.ReadLine());
int sum=0;
for(inti=n;i>=2;i--)
sum+=result(i);
Console.WriteLine(sum);
}
static int result(int n )
{
if (n== 2)
return 2;
else
return 2*(n-1)+result(n- 1);
}
相關文章
- GO語言————6.6 遞迴函式Go遞迴函式
- 遞迴函式遞迴函式
- c語言_遞迴C語言遞迴
- 函式表示式–遞迴函式遞迴
- 函式的遞迴函式遞迴
- JavaScript 函式遞迴JavaScript函式遞迴
- php遞迴函式PHP遞迴函式
- 函式之遞迴函式遞迴
- c#語言-高階函式C#函式
- 函式遞迴與生成式函式遞迴
- 遞迴函式的理解遞迴函式
- 第 8 節:函式-匿名函式、遞迴函式函式遞迴
- Python 函式進階-遞迴函式Python函式遞迴
- JS函式表示式——函式遞迴、閉包JS函式遞迴
- C語言系列之 函式與遞迴-尹成-專題視訊課程C語言函式遞迴
- 1.5.6 python遞迴函式Python遞迴函式
- 13.0、python遞迴函式Python遞迴函式
- day 17 – 1 遞迴函式遞迴函式
- 遞迴函式例項大全遞迴函式
- 遞迴函式-樹形列表遞迴函式
- Hellow C# unity學習記錄(8)函式的遞迴C#Unity函式遞迴
- 【C語言】函式的概念和函式的呼叫(引數傳遞)C語言函式
- c語言遞迴函式實現求最大公約數(Euclid演算法)C語言遞迴函式演算法
- 函數語言程式設計之尾呼叫和尾遞迴函數程式設計遞迴
- 初學 PHP 函式的遞迴PHP函式遞迴
- 直觀理解(尾)遞迴函式遞迴函式
- C#遞迴C#遞迴
- C語言函式手冊:c語言庫函式大全|C語言標準函式庫|c語言常用函式查詢C語言函式
- C語言遞迴之母牛的故事C語言遞迴
- 遞迴函式,可變引數列表遞迴函式
- JavaScript 中匿名函式的遞迴呼叫JavaScript函式遞迴
- Go 語言函式Go函式
- Go語言入門教程系列——函式、迴圈與分支Go函式
- C#遞迴例程C#遞迴
- 發現C語言遞迴深度有限制C語言遞迴
- C語言用遞迴方法求解階乘C語言遞迴
- 基於C語言用遞迴思想實現斐波那契數列的函式設計C語言遞迴函式
- 測開之函式進階· 第1篇《遞迴函式》函式遞迴