我正在学习递归,但我无法理解为什么这种方法不能正常工作。
public static boolean theSame(int[] arr, int start, int end) {
if(arr[start]==arr[end]) {
if(start!=end) {
start++;
theSame(arr, start, end);
}
else {
return true;
}
}
return false;
}
数组是4, 4, 4, 4, 4, 4
,我正在从索引1和5中测试它。是什么给出的?为什么不起作用?我假设它与if(start!=end)
条件有关,但我不确定。
我忘了添加,当它应该明确返回true时,该方法返回false。
答案 0 :(得分:6)
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
let presentedViewController = UIHelper.topViewController()
if presentedViewController is orientationIsOnlyLandscape {
return .landscape
}
return .portrait
}
你可以在一行中完成。
public static boolean theSame(int[] arr, int start, int end) {
if(arr[start]==arr[end]) {
if(start!=end) {
start++;
theSame(arr, start, end); // here's your problem
// return theSame(arr, start, end); might work better
}
else {
return true;
}
}
return false;
}
答案 1 :(得分:1)
您只需要替换
theSame(arr, start, end);
带
return theSame(arr, start, end);
在现有实现中,inner
方法调用返回的值将被忽略,最终返回false
(最后一行)。以下应该可以正常工作:
public static boolean theSame(int[] arr, int start, int end) {
if (arr[start] == arr[end]) {
if (start != end) {
start++;
return theSame(arr, start, end);
} else {
return true;
}
}
return false;
}