1五、C#基礎整理(遞歸)

帶輸出參數的函數

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

例:函數

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

主函數裏面的寫法:spa

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的值)3d

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、概念:code

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

**簡單說就是讓函數先執行到知足條件的那一步,而後帶着數據開始調用函數自己。遞歸

2、應知足條件:string

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

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

3、例子

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


 


 

4、注意事項notice:

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

二、遞歸函數的每次調用都須要棧來存儲,若是次數太多的話容易形成棧溢出。

練習:

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

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

二、一我的趕一羣羊去賣,每過一個村子賣出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;
        }
答案
相關文章
相關標籤/搜索