测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A30525. 数学游戏校园里流行一种新的数学游戏:每次邀请两个同学参加,第一个同学先从1和2中挑一个数字,第二个同学可以在对方的基础上选择加1或者加2,然后又轮到第一个同学,他也可以选择加1或者加2,之后再把选择权交给对方,就这样交替地选择加1或者加2,谁先加到20,谁就赢了。小智编写了以下程序,分析总共存在多少种可能出现的情形。请补充完成该程序。def act(n): if n==1 or ____①___…

填空题 较难

题目描述

数学游戏

校园里流行一种新的数学游戏:每次邀请两个同学参加,第一个同学先从1和2中挑一个数字,第二个同学可以在对方的基础上选择加1或者加2,然后又轮到第一个同学,他也可以选择加1或者加2,之后再把选择权交给对方,就这样交替地选择加1或者加2,谁先加到20,谁就赢了。小智编写了以下程序,分析总共存在多少种可能出现的情形。请补充完成该程序。

def act(n):

      if n==1 or ____①____:

            return 1

      sn = ____②_____

      return____③____


tn = act(____④____)

print("总共存在%d种可能出现的情形。"%tn)

参考答案

def act(n): if n == 1 or n == 2: return 1 sn = act(n - 1) + act(n - 2) return sn tn = act(20) print("总共存在%d 种可能出现的情形。"%tn)

答案解析

①处应填入 n==2:

解析:题目中说明第一个同学先从 1 和 2 中挑一个数字,当当前数字为 1 或 2 时,只有一种可能出现的情形,所以这里判断当`n`等于 1 或 2 时返回 1。


②处应填入 act(n - 1) + act(n - 2):

解析:对于当前数字`n`,可以从`n - 1`通过加 1 到达`n`,也可以从`n - 2`通过加 2 到达`n`,所以到达`n`的情形数等于到达`n - 1`的情形数加上到达`n - 2`的情形数,通过递归调用`act(n - 1)`和`act(n - 2)`来实现。


③处应填入 sn:

解析:将计算得到的到达当前数字`n`的情形数`sn`返回。


④处应填入 20:

 解析:最终目的是计算到达数字 20 有多少种可能出现的情形,所以调用`act`函数时传入参数 20。

上一题 下一题