补点课外知识:
&& ”,“或 ||∣∣ ”,“非 !! ”都有短路效应,如下所示,直接看代码
if(A && B) // 若 A 为 false ,则 B 的判断不会执行(即短路),直接判定 A && B 为 false
if(A || B) // 若 A 为 true ,则 B 的判断不会执行(即短路),直接判定 A || B 为 true
在本题中不让用while循环,可以用&&运算符来代替
如果n==1时,下边的递归就结束不进行下去,下边等式的结果是布尔类型的变量
n > 1 && sumNums(n - 1)
具体流程
递归就是先下去调用,然后回溯,返回结果
一旦n==1,结束递归,res=res+1,将res向上返回,res=res+2,再向上返回res=res+3
image.png
代码如下所示
因为&&的运算结果是Boolean类型的,所以递归时加一个sumNums(n - 1) > 0,保证这个是布尔类型的
同时用辅助变量x来接收运算后的结果
class Solution {
int res = 0;
public int sumNums(int n) {
boolean x = n > 1 && sumNums(n - 1) > 0;
res += n;
return res;
}
}
网友评论