劍指offer之求1+2+...+n

題目描述:
求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
示例 1:
輸入: n = 3
輸出: 6
示例 2:
輸入: n = 9
輸出: 45
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/qiu-12n-lcof
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

解題思路:
這道題很容易想到的解題思路是遞歸的解法,即每次函數每次返回當前值n與遞歸下一步的和(n+sumNums(n-1))。你可能會寫出下面的代碼:

class Solution {
public:int sumNums(int n) {return n+sumNums(n-1);}
};

很明顯上面的代碼是沒有遞歸終止條件的,也就是說這段代碼會一直執行下去。因此我們需要添加一個終止條件,也就是當n==0時,遞歸結束。進而你可能會想到下面的代碼:

class Solution {
public:int sumNums(int n) {return n == 0 ? 0 : n + sumNums(n-1);}
};

再檢查一遍題目描述,這道題是不允許使用條件判斷語句的,因此上面的代碼也不可行。為此,我們還需要再想一下其他的判斷方法。我們知道C++中如果a&&b中a為0,那么程序將不再判斷b是否為1,進而可以想到將函數的終止條件放到a中,將執行條件放到b中,從而得到下面的代碼:

class Solution {
public:int sumNums(int n) {n && (n += sumNums(n-1));//當n!=0時函數繼續遞歸執行,當n==0時,函數返回0,結束遞歸。return n;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443649.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443649.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443649.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

opencv計算圖像亮度調節_OpenCV教程創建Trackbar圖像對比度、亮度值調整

這篇文章中我們一起學習了如何在OpenCV中用createTrackbar函數創建和使用軌跡條,以及圖像對比度、亮度值的動態調整。文章首先詳細講解了OpenCV2.0中的新版創建軌跡條的函數createTrackbar,并給上一個詳細注釋的示例。然后講解圖像的對比度、亮度值調整的…

TCP與UDP的區別(未完成,待補充)

TCP:Transport Control Protocol UDP:User Data Protocol TCP相較于UDP有更高的可靠性。TCP相較于UDP需要更多的存儲空間。因為TCP的頭部有20個字節,UDP的頭部只有8個字節。UDP相較于TCP有更高的實時性。TCP基于連接,UDP基于不連…

find linux 目錄深度_浪里淘沙,詳解Linux系統中Find命令的實用技巧

知了小巷:浪里淘沙,詳解Linux系統中Find命令的實用技巧。啊哈,找到了!當我們需要在Linux系統上定位某個文件或目錄時,find命令通常是必備之選。它使用起來非常簡單,但有許多不同的可選項,允許我…

劍指offer之從上到下打印二叉樹

從上到下打印出二叉樹的每個節點,同一層的節點按照從左到右的順序打印。 例如: 給定二叉樹: [3,9,20,null,null,15,7], 返回: [3,9,20,15,7] 來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problem…

小米真藍牙耳機說明書_小米真無線藍牙耳機Air2 SE評測:僅需169元,享受隨心暢聽體驗...

繼小米真無線藍牙耳機Air 2、小米真無線藍牙耳機Air 2S之后,小米公司又于2020年5月19日再次推出了一款售價更為親民的真無線藍牙耳機新品——小米真無線藍牙耳機Air2 SE,該機不僅延續了小米真無線藍牙耳機Air 2系列的外觀設計,支持開盒彈窗、…

引用與指針的區別

雖然指針和引用都可以完成對其他對象的間接訪問,但是還是有很多不同之處: 1.本身是否是對象 指針本身就是一個對象,而引用本身不是一個對象。因此允許對指針賦值和拷貝,可以定義對指針的引用,已經指向指針的指針&#…

三點外接圓_故地重游偽切圓——偽外接圓的基本性質

在思考一個有關于偽外接圓的等角線問題時,我回想起偽外接圓的一道小題目,這是2012年羅馬尼亞大師杯的第六題,這道題目直接以結論的形式呈現出了偽外接圓的基本性質,是一道入門偽外接圓必做的精巧小題。當然有些讀者可能從未見過&q…

C++的const限定符

const限定符總是讓人很頭疼,下面講解一下幾個比較容易混淆的概念: 對常量的引用(常量引用): 一般情況下,引用的類型要與其所引用的對象的類型一致,其中的例外情況就是,當初始化常量…

Linux學習:第五章-Linux用戶和用戶組管理

一用戶管理命令用戶信息文件:/etc/passwd aa:x:501:501::/home/aa:/bin/bash 第一列:用戶名 第二列:密碼標志 第三列:UID用戶ID 0管理員 1-499系統用戶(偽用戶) 500普通用戶 第四列:GID初始組ID…

一點等于多少厘米_馬桶知識介紹,你了解馬桶多少

我們可能并不了解我們經常運用的馬桶,認為馬桶便是簡簡單單的規劃,沒什么技術含量。其實不然,馬桶的規劃也包含了不少物理學原理。假如你家里的馬桶出現毛病,首先要排查毛病的原因,但是假如不了解馬桶結構圖那就很難把…

動態內存分配與智能指針

內存分配: 靜態存儲區: 局部static對象類的static數據成員定義在任何函數之外的變量 棧區: 函數內的非static對象 動態內存分配的方式有: new和delete智能指針(shared_ptr、unique_ptr、weak_ptr)all…

1151壓力變送器型號_日本進口橫河EJA530E壓力變送器型號解讀!

橫河EJA變送器對大家來說也許不陌生,但是對于EJA變送器的型號很多人還不是很懂,因為一個全型號代表這很多參數,每一個字母和每一個數字背后都是一個準確的參數,我們在選型的時候要提供必要的參數,更具參數選出合適的型…

plc控制可調節閥流程圖_PLC控制的水箱液位控制系統畢業論文

內容介紹原文檔由會員 莎士比亞 發布論文標準WORD格式排版40頁摘要在人們生活以及工業生產等諸多領域經常涉及到液位和流量的控制問題, 例如居民生活用水的供應, 飲料、食品加工, 溶液過濾, 化工生產等多種行業的生產加工過程, 通常需要使用蓄液池, 蓄液池中的液位需要維持合適…

idea繼承后重新方法快捷鍵_idea 查看類繼承關系的快捷鍵

類似eclipse ctrlt的快捷鍵,idea中是ctrlH…找到對應的類 查看類關系圖…1.在想要查看的類上按 Ctrl H -> Diagrams -> Show Diagrams -> Java Class Diagrams -> Show Implementations -> Ctrl A -> 右擊一下 -> Enter .…打開想要查看的接口或者類文件…

怎樣在數組末尾添加數據_如何利用C++實現可變長的數組?

應該執行什么功能?假設我們要實現一個將自動擴展的數組類,是否需要實現函數?讓我們從下面主要功能使用的功能開始,看看我們需要實現哪些功能。輸出結果:0 1 2 3 40 1 2 100 4您需要做什么才能實現上述功能?…

Linux學習:第六章-Linux服務和進程管理

一進程查看 1psaux查看當前系統所有運行的進程 -a顯示前臺所有進程 -u顯示用戶名 -x顯示后臺進程 user: 用戶名 pid:進程id。PID1init系統啟動的第一個進程 %CPUcpu占用百分比 %MEM內存占用百分比 VSZ虛擬內存占用量KB RSS固定內存占有量 tty登錄終端tty…

覆蓋索引與聯合索引_淺析MySQL的索引覆蓋和索引下推

寫在前面在MySQL數據庫中,索引對查詢的速度有著至關重要的影響,理解索引也是進行數據庫性能調優的起點,索引就是為了提高數據查詢的效率。今天我們來聊聊在MySQL索引優化中兩種常見的方式,索引覆蓋和索引下推索引覆蓋要了解索引覆…

python3 輸入輸出_Python3基礎之輸入和輸出實例分析

通常來說,一個Python程序可以從鍵盤讀取輸入,也可以從文件讀取輸入;而程序的結果可以輸出到屏幕上,也可以保存到文件中便于以后使用。本文就來介紹Python中最基本的I/O函數。一、控制臺I/O1.讀取鍵盤輸入內置函數input([prompt])&…

redis 哨兵 異步_突破Java面試(23-8) - Redis哨兵主備切換的數據丟失問題-阿里云開發者社區...

1 數據丟失的兩個場景主備切換的過程,可能會導致數據丟失1.1 異步復制由于 master > slave的復制是異步的,所以可能有部分數據還沒復制到slave,master就宕機,于是這些數據就丟失了1.2 腦裂導致腦裂,也就是說&#x…

vue 斷開正在發送的請求_vue 發送請求頻繁時取消上一次請求

前言:在項目中經常有一些場景會連續發送多個請求,而異步會導致最后得到展示的結果可能不是最后一次發送請求返回的結果,且對性能也有非常大的影響。場景:列表式切換商品,有時候上一次請求的結果非常慢,而我…