劍指offer 遞迴 求1 2 3 n

2021-10-04 10:15:26 字數 1015 閱讀 2163

題目描述

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(a?b:c)。

思路:使用遞迴f(n) = f(n-1) + n, 但是不能使用if進行遞迴出口的控制,因此利用python中and的屬性,即and判斷都為真的話輸出and後面的那個數字。

正確答案:

# -*- coding:utf-8 -*-

class

solution

:def

sum_solution

(self, n)

:# write code here

ans = n>

0and n

return ans and ans + self.sum_solution(n-

1)

# -*- coding:utf-8 -*-

class

solution

:def

sum_solution

(self, n)

:# write code here

return n and n + self.sum_solution(n-

1)

錯誤示範:

# -*- coding:utf-8 -*-

class

solution

:def

sum_solution

(self, n)

:# write code here

ans = n>

0and n

return ans + self.sum_solution(n-

1)

錯誤原因:在return的時候,如果不給定遞迴的結束條件,遞迴將無窮盡地計算下去,在本題中,將ans and ans + self.sum_solution(n-1)作為遞迴的終止條件,即當n==0時,return 0,結束遞迴。

劍指offer系列37 求1 2 3 n

2019 07 23 11 44 01 從這個題開始,我有些題目標題前面會加乙個 號,以表示此題目比較重要,要多複習其中的知識點。這個題就1到n的加法,不能用乘數法 迴圈語句和條件語句。第乙個方法就是把想要的計算放進建構函式,注意這裡算累計和所以要一直更新值,因此一定要用靜態成員函式。1 class...

每天一道劍指offer 求1 2 3 n

考試結束,班級平均分只拿到了年級第二,班主任於是問道 大家都知道世界第一高峰珠穆朗瑪峰,有人知道世界第二高峰是什麼嗎?正當班主任要繼續發話,只聽到角落默默響起來乙個聲音 喬戈里峰 每天一道劍指offer 求1 2 3 n 求1 2 3 n,要求不能使用乘除法 for while if else sw...

刷演算法 求1 2 3 n

求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 題目要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句,那麼首先就要思考怎麼才能使n一次次的相加且到0的時候結束。首先...