取数字

本文探讨了一款关于从自然数序列中取数的游戏,玩家需遵循特定规则:不能连续取走相邻两数。通过递推公式f[i]=f[i-1]+f[i-2],解析了所有可能的取数策略,揭示了其与斐波那契数列的内在联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

 我们来玩一个游戏:自然数1到N,按顺序列成一排,你可以从中取走任意个数,但是相邻的两个不可以同时被取走。如果你能算出一共有多少种取法,那么你会被天神Lijiganjun奖励。

输入

  仅包含一个数n(1< n < 50)。

输出

 仅包含一个数———你的答案。

样例输入

5

样例输出

13

提示

n=45 的时候,已经超过1亿,用long long int 定义。

思路:f[i]等于在 i-1 的序列里最右侧加入了一个 i ,于是就有了两种情况,一种是先拿 i , 但 i - 1 就不能一起拿了,也就是说这种情况相当于前 i - 2 跟 i 一起拿(只需算f[i-2]的次数,因为i每种情况下都是第一个拿,不占次数),第二种情况是留着 i 最后再拿,也就成了只拿前 i - 1 (最后一个自然就是i 所以只需算f[i-1]的次数),即 f[i-1] , f[i] 为两种情况之和,也就是 f[i] = f[i-1] + f[i-2]。
疑问:为什么n等于2时有三种取法????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值