這篇文章主要介紹“怎么使用Java遞歸”,在日常操作中,相信很多人在怎么使用Java遞歸問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么使用Java遞歸”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
在平陽(yáng)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供網(wǎng)站建設(shè)、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都營(yíng)銷(xiāo)網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,平陽(yáng)網(wǎng)站建設(shè)費(fèi)用合理。
publicinterfaceReverser { publicString reverse(String str);
在Java中,***的實(shí)現(xiàn)就是用JDK中StringBuffer的反轉(zhuǎn)方法,它不僅速度快,效率高,而且還知道如何處理unicode代理對(duì)(surrogate pairs)。其它方案基本上都可以忽略掉。
publicclassJdkReverser implementsReverser { publicString reverse(String str) { if((null== str) || (str.length() <= 1)) { returnstr; } returnnewStringBuffer(str).reverse().toString();
不僅選擇把趣味性地實(shí)現(xiàn)當(dāng)做一種答案,而且候選者有沒(méi)有重用JDK,或者告訴你“JDK中有那么些東西是可以去實(shí)現(xiàn)的”,哪一種好呢,google一下可以幫你找到JDK的解決方案,你總不希望開(kāi)發(fā)者實(shí)現(xiàn)一切。
處理問(wèn)題:
問(wèn)他代碼中什么地方有bug,即使沒(méi)有?;蛘叽a怎么會(huì)報(bào)錯(cuò),他的答案至少可以引出一個(gè)討論關(guān)于如何處理空值的話(huà)題來(lái)。
返回null 返回“” 拋出NullPointerException 拋出IllegalArgumentException
第二個(gè)討論的焦點(diǎn)是是如何去優(yōu)化解決方法,像返回字符串本省“”,長(zhǎng)度為1的字符串(本省就是反轉(zhuǎn))
遞歸(Recursion):
之后要求應(yīng)聘者在反轉(zhuǎn)的問(wèn)題上寫(xiě)一個(gè)遞歸的方案(這至少是漂亮的,但至少可用)
publicString reverse(String str) { if((null== str) || (str.length() <= 1)) { returnstr; } returnreverse(str.substring(1)) + str.charAt(0);
有些開(kāi)發(fā)人員在腦海中想不到處理遞歸,或者需要時(shí)間和一些提示。那些不能處理遞歸的很有可能對(duì)于復(fù)雜的問(wèn)題沒(méi)法完成。
你可以問(wèn)他們關(guān)于遞歸方案的效率,詢(xún)問(wèn)尾(Tail)遞歸,詢(xún)問(wèn) “+”操作的效率,如何處理,關(guān)于為什么String都是不可變的(至少在大多時(shí)候這么問(wèn)),反轉(zhuǎn)“Stephan”時(shí),問(wèn)候選者有多少個(gè)字符串對(duì)象創(chuàng)建。在討論中,開(kāi)發(fā)者說(shuō)“Easy”,他在整個(gè)大學(xué)都在用Lisp語(yǔ)言,之前我還不知道, 現(xiàn)在聽(tīng)起來(lái)真是個(gè)極好的消息。你還可以詢(xún)問(wèn)在上面代碼結(jié)束遞歸的停止條件。
更多的方案:
在適當(dāng)?shù)奈恢谜{(diào)動(dòng)StringBuffer:
publicString reverse(String str) { if((null== str) || (str.length() <= 1)) { returnstr; } StringBuffer result = newStringBuffer(str); for(inti = 0; i < (str.length() / 2); i++) { intswapIndex = str.length() - 1- i; charswap = result.charAt(swapIndex); result.setCharAt(swapIndex, result.charAt(i)); result.setCharAt(i, swap); } returnresult.toString();
采用調(diào)用數(shù)組的方法:
publicString reverse(String str) { if((null== str) || (str.length() <= 1)) { returnstr; } char[] chars = str.toCharArray(); intright = chars.length - 1; for(intleft = 0; left < right; left++) { charswap = chars[left]; chars[left] = chars[right]; chars[right--] = swap; } returnnewString(chars);
SringBuffer追加的方法:
publicString reverse(String str) { if((null== str) || (str.length() <= 1)) { returnstr; } StringBuffer reverse = newStringBuffer(str.length()); for(inti = str.length() - 1; i >= 0; i--) { reverse.append(str.charAt(i)); } returnreverse.toString();
到此,關(guān)于“怎么使用Java遞歸”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
網(wǎng)頁(yè)題目:怎么使用Java遞歸
瀏覽路徑:http://aaarwkj.com/article28/isgejp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、虛擬主機(jī)、電子商務(wù)、手機(jī)網(wǎng)站建設(shè)、定制開(kāi)發(fā)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)