題目描述
求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的時候結束。首先...