劍指Offer 發散思維能力

2021-09-25 23:04:58 字數 896 閱讀 2754

不用加減乘除做加法

求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 ...