日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java数位倒置递归_有人能解释一下这个递归代码如何在java中反转int吗?

發布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java数位倒置递归_有人能解释一下这个递归代码如何在java中反转int吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

r根本不用

10*r+n%10

實際上,這是一件很棘手的事情,而且很酷。

這是一個很好的例子,說明變量命名不當會使代碼難以理解。我們有3行代碼可以實際執行某些操作,但它的工作原理并不明顯。

private static int NOTHING_REVERSED_SO_FAR = 0;

private static int reverse(int numberToBeReversed, int reversalSoFar) {

if (numberToBeReversed == 0) return reversalSoFar;

return reverse(numberToBeReversed/10, 10*reversalSoFar + numberToBeReversed%10);

}

public static int reverse(int numberToBeReversed) {

return reverse(numberToBeReversed, NOTHING_REVERSED_SO_FAR);

}

所以我們首先調用public方法。假設我們通過123作為數字的倒數。這將調用未經更改傳遞123的私有版本,并將reversalSoFar初始化為0。

所以馬上,你就可以看到,如果numberToberVersed是0,我們就返回到目前為止計算出的值。我建議您編寫一個junit測試來挑戰他的斷言。

所以當我們遞歸的時候,我們到底在做什么?首先,我們并不是真的把數字除以10。我們在做分區,通過

遞歸地。未更改反向的數字。

分割結果為123->123/10->12。(由于是int數據類型,分數丟失了。)好的,我們將傳遞一個12作為第一個參數。第二個論點呢。我們知道我們通過了0的逆轉。所以我們有10*(0)+(123)%10。123在這里是正確的,因為我們沒有改變數字。結果是3。所以我們將再次遞歸,通過12和3。

現在,進行下一次迭代。

0. 123 0

1. 12 3

2. ?? ?

總結

以上是生活随笔為你收集整理的java数位倒置递归_有人能解释一下这个递归代码如何在java中反转int吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。