找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
請尊重及感激所有版主付出和奉獻感激所有對伊莉作出奉獻的人尊貴會員無限使用任何功能
一拳超人強姦overlordmgrpg無碼 ge
ns怪獸ghkp 27ceadvenusbab夜のキケ

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

(4月新番)[繁]神明渴

[繁]怪異與少女與神隱

(4月新番)[繁]搖曳露

[繁]怪獸八號02-

[繁]戰隊大失格03-

[繁]蔚藍檔案03-
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 1336|回復: 5
打印上一主題下一主題

[問題](已解決)如何用遞迴方式將數字反轉? 關閉[複製鏈接]

Rank: 1

帖子
12
積分
111 點
潛水值
870 米
跳轉到指定樓層
樓主
發表於 2013-11-25 01:40 PM|只看該作者|倒序瀏覽
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
本帖最後由 tsou88 於 2013-11-26 02:21 PM 編輯

請問在不使用字串函式的情況下,如何用遞迴方式將數字反轉(如:1234轉成4321)?謝謝!
分享分享0收藏收藏0支持支持0
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

帖子
18
積分
16 點
潛水值
5160 米
頭香
發表於 2013-11-25 04:00 PM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
本帖最後由 reverence 於 2013-11-27 12:15 AM 編輯

假設輸入是 Integer,  function 大概是這樣,會有 overflow  和 reverse 100 之類的數的問題,這些我就懶得處理了


int reverseInt(int x) {              ...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 1

帖子
12
積分
111 點
潛水值
870 米
3
發表於 2013-11-26 12:03 PM|只看該作者
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
reverence 發表於 2013-11-25 04:00 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

假設輸入是 Integer,  function 大概是這樣,會有 overflow  和 reverse 100 之類的數的問題,這些我就懶得 ...

reverence大大,您的程式經實際測試,完全不會將數字反轉耶。...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

  尊貴會員

Melty Snow  雪靈

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
3223
積分
24364 點
潛水值
77320 米
4
發表於 2013-11-26 01:19 PM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
tsou88 發表於 2013-11-26 12:03 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

reverence大大,您的程式經實際測試,完全不會將數字反轉耶。
  1. int reverseInt(int x)
  2. {
  3.         if(x == 0)
  4.             return 0;
  5.         if(x < 0)
  6.             return -reverseInt(-x);

  7.         int last = x % 10;
  8.         int first = 1;
  9.        
  10.         if(last != 0)
  11.         {
  12.                 while(first <= x)
  13.                     first *= 10;
  14.                 first /= 10;
  15.         }
  16.        
  17.         return last * first + reverseInt(x/10);
  18. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
Melty Snow [雪靈]

使用道具檢舉

Rank: 1

帖子
12
積分
111 點
潛水值
870 米
5
發表於 2013-11-26 02:16 PM|只看該作者
snowflying 發表於 2013-11-26 01:19 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

snowflying大大,您的程式很O.K.;但小弟才疏學淺,可否請您撥冗對您寫的程式略加註解說明?萬分感謝!




若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

  尊貴會員

Melty Snow  雪靈

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
3223
積分
24364 點
潛水值
77320 米
6
發表於 2013-11-26 03:34 PM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
tsou88 發表於 2013-11-26 02:16 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

snowflying大大,您的程式很O.K.;但小弟才疏學淺,可否請您撥冗對您寫的程式略加註解說明?萬分感謝! ...
  1. if(x == 0)
  2.     return 0;
複製代碼
若 x 是 0,直接回傳 0 (終止條件)
  1. if(x < 0)
  2.     return -reverseInt(-x);
複製代碼
若 x 為負值,先將他取絕對值,運算後再加上負號
  1. int last = x % 10;
  2. int first = 1;

  3. if(last != 0)
  4. {
  5.     while(first <= x)
  6.         first *= 10;
  7.     first /= 10;
  8. }
複製代碼
last 為取 x 的個位數
first 是用來找 10的次方數
如 5234 (四位數)
first 找到後,值為 1000
原因就是 5234 的 4 要移到前面
就是 4 * 1000 + reverseInt(523)

if(last != 0)
只是個位數為 0 時,可以省掉這個步驟,因為 0 移到前面沒影響
這句可以省掉

最後回傳 last * first + reverseInt(x/10);
last * first 就是個位數提前
reverseInt(x/10) 就是前面部分倒轉後接在原來的個位數後面

---------------------------------------------------------------

上面是以個位數提前的方式來做
你也可以用最高位移到後面的方式處理,不過要注意連續 0 的部分...
瀏覽完整內容,請先 註冊登入會員
Melty Snow [雪靈]

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部