不用加減乘除做加法
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(a?b:c)。
看到這道題的第一反應是使用迴圈或者遞迴,但是,題目要求不能使用for、while、if、else、switch、case等關鍵字及條件判斷語句。
第二個反映是利用公式(1+
n)×n
/2(1+n)\times n / 2
(1+n)×
n/2來計算結果,但是題目中要求不能使用乘除法。
至此分析,迴圈和公式肯定用不了,但是如果不利用if判斷語句作為終止條件,遞迴演算法是可以使用的。由此可以想到利用邏輯與的短路特性實現遞迴終止。
邏輯與 a&&b,若a為false,則b不執行;若a為true,則b執行。
則(n>0) && (sum += sum_solution(n-1))>0
當n>0時, (sum += sum_solution(n-1))>0執行,則進行遞迴操作;
否則, (sum += sum_solution(n-1))>0不執行,遞迴終止。
public
class
solution
}
寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。
例如 5+7
直到進製為0,得到最終結果。
public
class
solution
return num1;
}}
劍指offer 發散思維能力
求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 1 解法一 python函式 coding utf 8 class solution def sum solution self,n write code here r...
劍指offer刷題記錄 發散思維能力
求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 需要迭代計算又不讓用迴圈語句,自然想到遞迴呼叫了,但是題目又不讓用if case等判斷語句,要如何終止遞迴呢?使用 邏輯運算,如果前乙個為0的話,後面的語句將不再被呼叫...
6 5 發散思維能力
面試題47 不用加減乘除做加法 面試題48 不能被繼承的類 參考 所有offer題目的leetcode鏈結及python實現 github target offer 題目 求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c ...