[英]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.