You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解析Scala递归函数r(22, 18)返回4的底层逻辑

拆解Scala递归函数r(22, 18)返回4的推导过程

没问题,我来帮你理清楚这个递归的逻辑!首先得先明确递归函数r的定义——从返回结果4来看,它大概率是一个用递归实现的**"大数减小数直到结果小于小数"**的逻辑,常见的实现代码大概是这样:

def r(a: Int, b: Int): Int = {
  // 如果第一个数小于等于第二个数,交换位置保证大数在前
  if (a <= b) r(b, a)
  // 如果大数减小数的结果比小数小,直接返回这个差值
  else if (a - b < b) a - b
  // 否则继续递归,用差值作为新的大数
  else r(a - b, b)
}

现在我们一步步拆解r(22, 18)的执行流程:

  1. 第一次调用:r(22, 18)
    • 此时a=22,b=18,满足a > b的条件,计算a - b = 22 - 18 = 4
    • 检查4 < 18,这个条件成立,所以直接返回4
    • 递归在这里就终止了,最终结果就是4

如果是另一种更简洁的递归实现(比如用递归处理参数顺序,直接返回取余结果),代码会是这样:

def r(a: Int, b: Int): Int = if (a > b) a % b else r(b, a)

推导过程更直接:

  • 调用r(22,18),a > b,直接计算22 % 18 = 4并返回,结果就是4

总结一下:这个递归函数的核心逻辑就是调整参数顺序保证大数在前,然后计算大数与小数的差值(或直接取余),当结果小于小数时返回该值,对于22和18来说,一次计算就得到了符合条件的4,所以最终返回4。

内容的提问来源于stack exchange,提问作者user7724005

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:34:13