剑指Offer - 面试题64. 求1+2+…+n(递归)
发布日期:2021-07-01 03:20:14 浏览次数:2 分类:技术文章

本文共 568 字,大约阅读时间需要 1 分钟。

1. 题目

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

示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45 限制:1 <= n <= 10000

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/qiu-12n-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 不能乘除,不能用公式
  • 不能循环(for、while
  • 递归,终止不能用if
class Solution {
public: int sumNums(int n) {
if(n==0) return 0; return n+sumNums(n-1); }};

把上面终止条件改一下:

n && (n = n+sumNums(n-1));//当n为0时,后面短路了,不会继续递归
class Solution {
public: int sumNums(int n) {
n && (n += sumNums(n-1)); return n; }};

在这里插入图片描述

转载地址:https://michael.blog.csdn.net/article/details/104303145 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)
下一篇:剑指Offer - 面试题24. 反转链表(遍历/递归)

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月28日 19时55分19秒