首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归函数未在另一个函数中调用的潜在问题

递归函数未在另一个函数中调用的潜在问题
EN

Stack Overflow用户
提问于 2022-03-22 15:47:14
回答 1查看 38关注 0票数 0

我正在尝试构建一个收银机(FreeCodeCamp中的一个算法项目),并且我已经创建了一个函数(giveChange(),一个递归函数),以便在另一个单独的函数(checkCashRegister)中调用。

但是,函数没有被调用。在我的情况下,我希望函数checkCashRegister返回0。

我检查了在for循环中将“返回”放置在错误位置的问题还是范围问题。看起来也不像。

代码语言:javascript
复制
function giveChange(diff, cid) {       
  for(let i = cid.length - 1; i > 0; i--) {
    if(cid[i-1][0] <= diff && diff <= cid[i][0]) {
      diff = diff - Math.min(cid[i-1][1], cid[i-1][0]*Math.ceil(((diff-cid[i-1][0])/cid[i-1][0])))
      if(diff !== 0) {
        giveChange(diff, cid)
      } else {
        return diff
      }
    }
  }
  return diff
}

function checkCashRegister(price, cash, cid) {
 
  let diff = cash - price
  cid[0][0] = 0.01
  cid[1][0] = 0.05
  cid[2][0] = 0.1
  cid[3][0] = 0.25
  cid[4][0] = 1
  cid[5][0] = 5
  cid[6][0] = 10
  cid[7][0] = 20
  cid[8][0] = 100

  giveChange(diff, cid)

  return diff
}

checkCashRegister(3.26, 100, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-22 15:56:40

调用return之前缺少givechange(diff, cid)关键字,

注意:我已经更新了条件,并使用三元不重复return关键字

代码语言:javascript
复制
function giveChange(diff, cid) {
  for (let i = cid.length - 1; i > 0; i--) {
    if (cid[i - 1][0] <= diff && diff <= cid[i][0]) {
      diff = diff - Math.min(cid[i - 1][1], cid[i - 1][0] * Math.ceil(((diff - cid[i - 1][0]) / cid[i - 1][0])))
      return diff !== 0 ? giveChange(diff, cid) : diff
    }
  }
  console.log(diff)
  return diff
}

function checkCashRegister(price, cash, cid) {

  let diff = cash - price
  cid[0][0] = 0.01
  cid[1][0] = 0.05
  cid[2][0] = 0.1
  cid[3][0] = 0.25
  cid[4][0] = 1
  cid[5][0] = 5
  cid[6][0] = 10
  cid[7][0] = 20
  cid[8][0] = 100

  return giveChange(diff, cid)
}

checkCashRegister(3.26, 100, [
  ["PENNY", 1.01],
  ["NICKEL", 2.05],
  ["DIME", 3.1],
  ["QUARTER", 4.25],
  ["ONE", 90],
  ["FIVE", 55],
  ["TEN", 20],
  ["TWENTY", 60],
  ["ONE HUNDRED", 100]
])

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71575018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档