簡體   English   中英

帶有可選參數的 C# 遞歸函數

[英]C# Recursive Function with Optional Parameter

我在recursive functions optional parameters遇到問題

這是一個示例代碼:

private static void RecursiveFunction(int x, int optional = 0)
{
    if (x < 5)
        RecursiveFunction(x + 1, optional++);
}

調用函數時:

RecursiveFunction(0);

我得到了以下結果(只需在即時窗口中調用此代碼string.Format("{0} - {1}", x, optional) ):

"0 - 0"
"1 - 0"
"2 - 0"
"3 - 0"
"4 - 0"

我在這里錯過了什么嗎? 謝謝!

更改自:

RecursiveFunction(x + 1, optional++);
//                               ^^

到:

RecursiveFunction(x + 1, ++optional);
//                       ^^

第一個執行操作然后增加optional
第二個在增加optional之后執行操作。

MSDN

++ var
var ++

第一種形式是前綴遞增操作。 操作的結果是操作數遞增后的值。

第二種形式是后綴遞增操作。 操作的結果是操作數增加之前的值。

您首先調用了RecursiveFunction ,然后增加了optional 你需要先增加它。

private static void RecursiveFunction(int x, int optional = 0)
{
    if (x < 5)
        RecursiveFunction(x + 1, ++optional);
}

您需要在調用之前遞增

RecursiveFunction(x + 1, ++optional);

在方法調用中使用++optional而不是optional++

通過使用optional++您將不會獲得作為參數傳遞給函數的遞增值,而是將0傳遞給每個函數調用。 你的電話應該是:

RecursiveFunction(x + 1, ++optional);

是的,

你需要做++optional而不是optional++

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM