關(guān)于JS遞歸中的坑

在LeetCode上做了一道算法題


題目是這樣的--

給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。

你可以假設(shè)每個(gè)輸入只對(duì)應(yīng)一種答案,且同樣的元素不能被重復(fù)利用。

示例:

···

給定 nums = [2, 7, 11, 15], target = 9

因?yàn)?nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

···

首先想到了用雙循環(huán)的方法去做

···

let twoSum = function(nums, target) {

? ? for (let i = 0,len=nums.length; i < len; i++) {

? ? ? ? for (let j = 0; j < len; j++) {

? ? ? ? ? ? if(nums[i] + nums[j] === target){

? ? ? ? ? ? ? ? return [i,j]

????????????????????}}}};

···

簡單暴力瞬間通過測試

但是這樣做看著就low,隨后打算用遞歸試試

····

let twoSum = function(nums, target, _index=0) {

? ? const num = nums[_index]

? ? for(let i=_index+1,len=nums.length;i++){

? ? ? ? if((num + nums[i])===target){

? ? ? ? ? ? return [_index, i]

}}

? ? _index++

? ? twoSum(nums, target,_index)? ? };

····

然后就出事了,調(diào)用? twoSum([2, 7, 11, 15],26)? 打印出來都是undefined,腫么費(fèi)事?然后就開始DEBUG,一步一步的跟,發(fā)現(xiàn)只要走到 return 后,雖然遞歸是停止了,但是DUBUG指針直接走到函數(shù)尾,并沒有對(duì)值進(jìn)行返回。

然后就蒙蔽了,不是在進(jìn)行判斷的時(shí)候進(jìn)行了返回值的嗎。

又跟了幾遍代碼,最后發(fā)現(xiàn)好像返回的值沒有返回到外層,而是還是留在了遞歸內(nèi)部。

繼續(xù)debug,最后在走到twoSum(nums, target,_index)的時(shí)候,一拍大腿,搞忘了return 函數(shù)

····

let twoSum = function(nums, target, _index=0) {

? ? const num = nums[_index]

? ? for(let i=_index+1,len=nums.length;i++){

? ? ? ? if((num + nums[i])===target){

? ? ? ? ? ? return [_index, i]

}}

? ? _index++

? ? return? twoSum(nums, target,_index)? ? };

····

這樣就解決了,也順利通過了代碼測試

想了想,最后一次進(jìn)行遞歸操作的時(shí)候值是返回了,但是只是返回到了遞歸自己調(diào)用的函數(shù)里,而最初的函數(shù)是沒有返回值的·,所以打印出來就是undefined,如果想要函數(shù)最后一次計(jì)算所得值,就需要在每次調(diào)用該函數(shù)的時(shí)候進(jìn)行return,每一次return都是把最新的函數(shù)調(diào)用返回到外層的函數(shù)調(diào)用,所以通過調(diào)用函數(shù)就能拿到值了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • <center>#1 Two Sum</center> link Description:Given an arr...
    鐺鐺鐺clark閱讀 2,374評(píng)論 0 3
  • 拉上窗簾 閉上了眼 腦中全是你的模樣 你優(yōu)美的身姿 你美麗的臉龐 如春風(fēng)一樣滋養(yǎng)心田 記得那天 我拉著你的手 走在...
    喬邊故事閱讀 181評(píng)論 0 1
  • 一篇關(guān)于微信第三方平臺(tái)產(chǎn)品的文章,確實(shí)有點(diǎn)無從下手,等我寫完了回來總結(jié)
    行走風(fēng)雨閱讀 167評(píng)論 0 0
  • 0、對(duì)于 HTTP 協(xié)議而言,HTML、CSS、JS、JSON 的本質(zhì)都是什么? 對(duì)于HTTP協(xié)議而言,,HTML...
    向前沖沖的蝸牛閱讀 272評(píng)論 0 0
  • 冷蕊凌風(fēng)自溢香,低眉頷首秀新妝; 輕歌雅韻詩相伴,別有幽思化否桑。
    故鄉(xiāng)的河閱讀 400評(píng)論 0 1

友情鏈接更多精彩內(nèi)容