题库首页 › GESP等级认证(Python) › 题目 25912

使用如下欧几里得算法求 gcd(105, 45) 时,函数 gcd(a, b) 的递归调用序列正确的是( )。 def gcd(a, b): return a if b == 0 else gcd(b, a % b)

A:gcd(105, 45) -> gcd(45, 60) -> gcd(60, 15) -> gcd(15, 0)
B:gcd(105, 45) -> gcd(45, 15) -> gcd(15, 0)
C:gcd(105, 45) -> gcd(60, 45) -> gcd(15, 45)
D:gcd(105, 45) -> gcd(15, 45) -> gcd(15, 0)

正确答案:B

答案解析

函数 gcd(a, b) 的执行基于递归机制:当 b 不为 0 时,递归调用 gcd(b, a % b);当 b 为 0 时,返回 a。初始调用为 gcd(105, 45),进入递归分支,计算 a % b 即 105 % 45 得到余数 15,下一层调用为 gcd(45, 15)。此时 b 仍不为 0,继续递归,计算 45 % 15 得 0,下一层调用为 gcd(15, 0)。此时 b 为 0,满足终止条件,不再递归。递归序列由每次实际发生的函数调用构成,调用顺序严格按执行流程推进,参数变化由模运算结果决定。

试卷来源:202606 CCF-GESP编程能力等级认证Python五级真题

本卷相关题目

在线做题 同科目题库