python编程求1!+2!+…+n!_算法题①:求1+2+…+n

该博客介绍了如何在不使用乘除法、循环和条件判断语句的情况下,用Python解决求1+2+…+n的问题。通过递归和逻辑运算符的短路性质,提供了Java、C++、C和Python的不同解法,包括使用三目运算符的替代方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题扣面试题:面试题64. 求1+2+…+n

​题目链接:https://leetcode-cn.com/problems/qiu-12n-lcof/

题目要求:

​求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

示例 1:

输入: n = 3

输出: 6

示例 2:

输入: n = 9

输出: 45

限制:

1 <= n <= 10000

解题思路

​首先我们梳理一下,这题要求我们不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句,因此我们手里能用的工具很少,列举出来发现只有加减法,赋值,位运算符以及逻辑运算符。

递归函数

思路和算法

​试想一下如果不加限制地使用递归的方法来实现这道题,相信大家都能很容易地给出下面的实现(以 C++ 为例)(三目运算符撒):

class Solution {

public:

int sumNums(int n) {

return n == 0 ? 0 : n + sumNums(n - 1);

}

};

​通常实现递归的时候我们都会利用条件判断语句来决定递归的出口,但由于题目的限制我们不能使用条件判断语句,那么我们是否能使用别的办法来确定递归出口呢?

答案就是逻辑运算符的短路性质,或者直接return。

解法

java解法

class Solution {

public int sumNums(int n) {

int sum = n;

boolean flag = n > 0 && (sum += sumNums(n - 1)) > 0;

return sum;

}

}

C++解法

// 解法一

class Solution {

public:

int sumNums(int n) {

return n == 0 ? 0 : n + sumNums(n - 1);

}

};

// 解法二

class Solution {

public:

int sumNums(int n) {

n && (n += sumNums(n-1));

return n;

}

};

C语言解法

// 解法一

int sumNums(int n){

return n == 0 ? 0 : n + sumNums(n - 1);

}

// 解法二

int sumNums(int n){

int sum = n;

bool flag = n > 0 && (sum += sumNums(n - 1)) > 0;

return sum;

}

Python解法

class Solution:

def sumNums(self, n: int) -> int:

return sum(range(n+1))

原文链接:https://blog.csdn.net/MrZhangBaby/article/details/106499014

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值