我在大學學習Scala語言,並且作爲「函數作爲數據」主題的作業,他要求我們寫一個函數plus(x ,y)≡x+ y而不使用操作+。在沒有使用操作的情況下實現函數加(x,y)≡x+ y +
def plus (x: Int, y: Int): Int = ???
我該如何開始思考解決這個問題?
我在大學學習Scala語言,並且作爲「函數作爲數據」主題的作業,他要求我們寫一個函數plus(x ,y)≡x+ y而不使用操作+。在沒有使用操作的情況下實現函數加(x,y)≡x+ y +
def plus (x: Int, y: Int): Int = ???
我該如何開始思考解決這個問題?
我不知道你的教授何意,但一個簡單的方法來做到這僅僅是減去的y
負:
def plus (x: Int, y: Int): Int = x - -y
謝謝,我會問他他的意思。 –
你總是可以通過位非禮:
1 )AND X和Y一起變成一個不同的變量(c):
2)根據你的端序位移位(c)一位(左/右)。檢查0值。
3)XOR和Y一起變成另一變量(d)。如果第2步是一個零值,這是你的正確答案。
如果步驟2不是一個零值:
4)(c)和(d)重複1-3。
這是非常遞歸的,它不能處理接近整數限制的數字,也不能在不修改的情況下處理負數。這不是一個完美的解決方案,但至少它足以幫助你在嚴格的數學之外開始思考。
聽起來像遞歸課程。我猜你可以使用+1和-1,但沒有別的。是嗎? – naomik
顯然你應該使用'42. $ plus(13)'。這個教訓是關於名稱改變的,名稱代表什麼。語言哲學,對吧? –
「有什麼想法?」自己做作業嗎?說真的,你爲什麼要別人爲你做呢?你在找什麼?一個完整的答案(如果是這樣,爲什麼)?我們可以提供更多關於您可以使用的信息。如果(看起來像一個常見的任務),你可以允許按位運算符,看到這裏http://stackoverflow.com/questions/4068033/add-two-integers-using-only-bitwise-operators –