程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 15、C#基礎整理(遞歸),

15、C#基礎整理(遞歸),

編輯:C#入門知識

15、C#基礎整理(遞歸),


帶輸出參數的函數

輸入參數相當於函數而言,相當於已經賦值了的變量,直接可用
輸出參數相當於定義一個沒有值的變量,在函數中進行賦值,然後調用函數的時候將賦值帶出函數

例:

public void shuchu(int a, out int b)
{ 
  b = a + 10; //b必須賦值
}

主函數裡面的寫法:

static void Main(string[] args)
{
int a = 11,b;
Program p = new Program();
p.shuchu(a,out b);//b需要先定義好,對應函數的數據類型,用於接收傳遞出來的數據
Console.WriteLine(b);//21
}

練習:用輸出參數寫一元二次方程求解的方法(返回是否有解,和x1,x2的值)

public string fangcheng(int a, int b, int c, out double x1,out double x2) { double de =(double) b * b - 4 * a * c; if (a == 0) { x1 = x2 = -1; return "不是一元二次方程"; } else if (de < 0) { x1 = x2 = -1; return "de<0,此方程無解"; } else { x1 = (double)(-b + de) / 2 * a; x2 = (double)(-b - de) / 2 * a; return "有解"; } } 答案

遞歸

一、概念:

函數體內調用本函數自身,直到符合某一條件不再繼續調用。

**簡單說就是讓函數先執行到滿足條件的那一步,然後帶著數據開始調用函數本身。

二、應滿足條件:

(1)有反復執行的過程(調用自身);

(2)有跳出反復執行過程的條件(函數出口)

三、例子

階乘的計算n!= n*(n-1)*(n-2)*(n-3)*……*1(n>0)


 


 

四、注意事項notice:

1、遞歸中必須要存在一個循環結束的條件。

2、遞歸函數的每次調用都需要棧來存儲,如果次數太多的話容易造成棧溢出。

練習:

1、n個桃,每過一天吃1/2+1個,7天後剩一個,原來有幾個桃?

public int tao(int day) { if (day == 7) { return 1; } int sum = (tao(day + 1)+1)*2; return sum; } 答案

2、一個人趕一群羊去賣,每過一個村子賣出1/3+1只,7個村子後還剩2只,原來有幾只羊?

public double yang(int cun) { if (cun == 7) { return 2; } double sum =(double)(yang(cun + 1) + 1) * 3; return sum; } 答案

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved