正在载入在线练习界面,本页内容可直接阅读…

AK CSP › CSP-J 2021 第一轮真题 › 第 13 题

CSP-J 2021 第一轮 第 13 题:递归函数solve(7)的返回值

单项选择 · 函数与递归 · 难度 中等 · 答案 C

题目

考虑如下递归算法

solve(n)
     if n<=1 return 1
      else if n>=5 return n*solve(n-2)
      else return n*solve(n-1)

则调用 solve(7) 得到的返回结果为( )。
CSP-J 2021 第一轮 第 13 题 原题
原题扫描(页面加载后可直接在线作答)

选项

  • A. 105
  • B. 840
  • C. 210
  • D. 420

答案

C

题解

答案是 C.210。

按条件逐步展开:

  • solve(7):因为 \(7\ge5\),返回 \(7\times solve(5)\)。
  • solve(5):因为 \(5\ge5\),返回 \(5\times solve(3)\)。
  • solve(3):因为 \(1<3<5\),返回 \(3\times solve(2)\)。
  • solve(2):因为 \(1<2<5\),返回 \(2\times solve(1)\)。
  • solve(1):因为 \(1\le1\),返回 \(1\)。

所以: \[ solve(7)=7\times5\times3\times2\times1=\boxed{210} \]

注意:当 \(n<5\) 且 \(n>1\) 时,递归参数改为 \(n-1\),不再是 \(n-2\)。

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号