皮皮的LeetCode刷题库

【剑指Offer】047——求1+2+3+...+n(进制转化)

2019-08-21  本文已影响0人  就问皮不皮

题目描述

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

解题思路

累加不能用循环的话,那就试试递归吧。判断递归的终止条件不能用 if 和 switch,那就用短路与代替。
(n > 0) && (sum += Sum_Solution(n-1))>0只有满足n > 0的条件,&&后面的表达式才会执行。

参考代码

Java

public class Solution {
    public int Sum_Solution(int n) {
        int sum = n;
        boolean t = (n > 0) && (sum += Sum_Solution(n-1))>0;
        return sum;
    }
}

Python

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.all_sum = 0
    def Sum_Solution(self, n):
        def get_sum(n):
            self.all_sum += n
            n -= 1
            return n > 0 and self.Sum_Solution(n)
        get_sum(n)
        return self.all_sum

个人订阅号

image
上一篇 下一篇

猜你喜欢

热点阅读