【发布时间】:2020-02-20 10:03:48
【问题描述】:
我有这个递归函数,它接收一组卡片并找到特定卡片的索引:
const getCardIndex = (deck, fullCardName) => fullCardName === deck[0] ? 52 - deck.length : getCardIndex(deck.splice(1), fullCardName)
const deck = 'Ace of Hearts, Ace of Diamonds, Ace of Clubs, Ace of Spades, Two of Hearts, Two of Diamonds, Two of Clubs, Two of Spades, Three of Hearts, Three of Diamonds, Three of Clubs, Three of Spades, Four of Hearts, Four of Diamonds, Four of Clubs, Four of Spades, Five of Hearts, Five of Diamonds, Five of Clubs, Five of Spades, Six of Hearts, Six of Diamonds, Six of Clubs, Six of Spades, Seven of Hearts, Seven of Diamonds, Seven of Clubs, Seven of Spades, Eight of Hearts, Eight of Diamonds, Eight of Clubs, Eight of Spades, Nine of Hearts, Nine of Diamonds, Nine of Clubs, Nine of Spades, Ten of Hearts, Ten of Diamonds, Ten of Clubs, Ten of Spades, Jack of Hearts, Jack of Diamonds, Jack of Clubs, Jack of Spades, Queen of Hearts, Queen of Diamonds, Queen of Clubs, Queen of Spades, King of Hearts, King of Diamonds, King of Clubs, King of Spades'.split(', ')
const result = getCardIndex(deck, 'King of Spades')
console.log(result)
有什么方法可以加快速度,即使用记忆?
【问题讨论】:
-
记忆化通常会增加内存使用,但不会减少 - 它需要存储更多持久性数据
-
@CertainPerformance 请原谅,错误的问题,现在更正。
-
为什么这甚至是一个递归函数?
deck.findIndex(card => card === 'King of Spades') -
deck.indexOf('King of Spades')有什么问题?
标签: javascript recursion memoization