Offre de pointeur d'épée 64. Trouvez 1 + 2 +… + n https://leetcode.cn/problems/qiu-12n-lcof/
Exigences 1+2+...+n
, il est nécessaire que des mots-clés tels que multiplication et division, for, while, if, else, switch, case et jugement conditionnel (A?B:C) :
En raison des conditions restrictives de la question, les solutions conventionnelles telles que la récursivité ne peuvent pas être utilisées, c'est une question casse-tête.
Effets de court-circuit des opérateurs logiques :
Les opérateurs logiques courants : "et&&", "ou ||", "non !", ont un effet de court-circuit très important :
if (A && B) //若A为false,则不会继续往后判断B,直接输出false;
if (A || B) //若A为true,也不会继续判断B,直接输出true;
Cette question doit réaliser l'exigence de "terminer la récursivité lorsque n == 1", qui peut être réalisée par effet de court-circuit.
n > 1 && sumNum(n-1)//当n==1,时,终止后面的语句。
Analyse de complexité :
- Complexité temporelle : O (n) : Le calcul de n + (n-1) + ....+2+1 nécessite l'ouverture de n fonctions récursives.
- Complexité spatiale : O (n) : Lorsque la profondeur de récursivité atteint n, le système utilise un espace supplémentaire de taille O (n).
code:
class Solution{
public:
int res = 0;
int sumNum(int n){
bool x = n > 1 && sumNum(n-1) > 0;//为构成语句,使用bool x =
res += n;
return res;
}
};