我正在尝试在C#中编写一个递归函数,它将采用两个参数,一个数组和一个索引.索引应该在每次递归时更改,但是从Array的长度开始 - 1.
像这样:
public static int[] UpArray(int[] num, int i = num.Length - 1) {...}
Run Code Online (Sandbox Code Playgroud)
但是,我不能引用num.我可以传递一个布尔值,说明这是否是第一次通过,并在代码中包含if子句.但我想知道是否有更优雅的方式.
不,一个可选参数的默认值已经是一个常数.
您可以使用-1注释中建议的默认值,或将其设置为可为空的int并将其默认为null:
public static int[] UpArray(int[] num, int? index = null)
{
int realIndex = index ?? num.Length - 1;
...
}
Run Code Online (Sandbox Code Playgroud)
或者更好的是,只有两种方法:
public static int[] UpArray(int[] num)
{
return UpArray(num, num.Length - 1);
}
private static int[] UpArray(int[] num, int index)
{
...
}
Run Code Online (Sandbox Code Playgroud)
这假设您不希望外部调用者实际指定索引 - 您只想在递归调用上执行此操作.
不需要任何可选参数,整体API就是您真正想要的,而不是让实现细节透视.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |