网站管理员登陆域名/如何用google搜索产品关键词
这里写目录标题
- 问题描述
- 思路分析及代码实现
问题描述
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?
请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容
思路分析及代码实现
这是一道递归题,还是用递归三要素来做
明确递归三要素!!!!
1.明确你的函数要干嘛
2.寻找递归结束条件
3.缩小函数,找出函数的等价关系式
然后我们根据递归思想来做这道题
第一步:明确函数要干嘛
假设jump(x,y)的功能是来求方法数的
def solve(jiu, dian, hua):return num
第二步:寻找递归结束条件:
当酒还剩1斗,花店还剩一家的,酒店没有了的时候递归结束
def jump(x, y):if jiu == 1 and dian == 0 and hua == 1:globle num # 这里num用的全局变量 num += 1return num
第三步:缩小函数,找出等价关系式:
if dian > 0:solve(jiu*2, dian-1, hua)
if hua > 0:solve(jiu-1, dian, hua-1)
最终代码
num = 0
def solve(jiu, dian, hua):if dian > 0:solve(jiu*2, dian-1, hua)if hua > 0:solve(jiu-1, dian, hua-1)if jiu == 1 and hua == 1 and dian == 0:global numnum += 1return numprint(solve(2, 5, 10))
最后结果为14