【Python】今日份刷题

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?

解题思路:列出前5级台阶可以产生多少种跳法,并观察规律  可以发现规律如下

没有台阶的时候,不用跳,0种跳法

只有1阶台阶的时候,有1种跳法

有2阶台阶的时候,有2种跳法

有3阶台阶的时候,有3种跳法

有4阶台阶的时候,有5种跳法

有5阶台阶的时候,有8种跳法

结论:除了没有台阶,1阶,2阶比较特别,3阶开始后续的跳法符合斐波那契数,即f(n)=f(n-1)+f(n-2) 函数递归可解

代码如下

def fibonacci(n):
    if n ==0:
        result=0
        return result
    elif n==1:
        result=1
        return result
    elif n==2:
        result=2
        return result
    else:
        result=fibonacci(n-1)+fibonacci(n-2)
        return result
user_input=int(input("请输入台阶数量:"))
print("青蛙一共有%d种方案跳台阶"%fibonacci(user_input))



原文地址:https://www.cnblogs.com/reseelei-despair/p/10976443.html

时间: 2024-10-17 16:41:31

【Python】今日份刷题的相关文章

今日份水题2018.11.2

这几天想突破一下树形DP,这也是高中时候一直没能搞定的. 今天先来两道简单的水一下. HDU2196 Computer 给一棵树,求树中每个点离其他点最远的距离.每个点第一遍DFS记录能达到的最远距离dp1[]和次远距离dp2[],之后第二遍dfs,每次先更新当前节点答案然后再向下搜.如果当前节点位于父节点答案所在链上,即dp1[j]+w[i,j]=dp1[i],此时又分两种情况1: dp1[j]<dp2[i]+w[i,j],则dp2[j]=dp1[j],dp1[j]=dp2[i]+w[i,j]

刷题方法论

[转自一亩三分田]谈谈面试官在面试coding题目时的考察终点与心理活动 本人简介: 曾经微软dev, 35+, 10年经验, 有FLG offer.  去年加入一个start up 公司, 最近前景不明, 在犹豫要不要去个稳定点的大公司.  我从sde开始面试其他人, 到现在估计面试过100+人次的面试和debrief. 我面过coding, problem solving, design, behavior.  本帖子只谈论纯粹coding, 视情况讨论要不要再开帖子讨论其他方面. 本文涉及

Python刷题之路,怎样做才能让技术突飞猛进

比你优秀的人比你还努力 这个世界最可悲的就是 , 比你优秀的人比你还努力 偶然的机会,通过Python认识了一位华为的文职工作人员.起初只是问我,Python初学者看什么书能快速入门.而两个月过后,她已经开始每天在Leecode上刷题了.虽然有时半夜微信收到她刷题刷到崩溃的消息,或者针对部分Python语法的疑问,但作为一位文职大厂的优秀员工,她却比很多本该靠着代码吃饭的人更为努力. 今天这篇文章,就写给那些希望学习Python,但在刷题路上迷茫或者找不到方向的朋友们.文章仅代表个人观点,不喜勿

python部落刷题宝学到的内置函数(二)

感觉到刷题宝有一个好处,也许也不是好处,它的答案必须是真正输出的值,也就是说应该输出字符串aaaa的时候,答案必须写成界面上返回的值,即'aaaa'.有利于真正记忆返回值类型,但是....太繁琐了 1.getattr():python自省函数,用于查看某对象是否具有某种属性并返回属性值或者末字符串,参数格式(一个对象, 属性名称字符串, 不存在时输出的字符串),举个例子: 1 class A: 2 def __init__(self): 3 self.name = 'hahahaha' 4 a

python部落刷题宝学到的内置函数

最近加入了python部落,感觉里面的刷题宝很有意思,玩了一下,知道了许多以前并不清楚的内置函数,然后感觉到快要记不住了,所以开始陈列一下 1.divmod(a,b):取a除以b的商和余数,功效等价于(a//b, a%b); 2.dir():参数为函数名,类名.它会告诉我们对应函数包含有什么参数 3.enumerate:遍历列表时同时生成了序号,举个例子: 1 a = [1, 2, 3] 2 for index,item in enumerate(a): 3 print index 4 prin

今日刷题集合

月考没考,最皮的是刷题效率低的可怕,搜索中的那些回溯用的还是很水,不如总结一下. codevs 题号:1501 1506 1842 1983 2549 2806 3143 3145 1008 1294 1295 1501 二叉树的最大宽度和高度(没加using namespace std ;会过不去编译,max.min函数封装在#include<iostream>里,所以没有using namespace std ;不行.) 1 #include<bits/stdc++.h> 2

本人用python刷题时的错误总结

本人新手,在leetcode刷题过程中出现过很多问题,故在此总结,不定时更新. 1.在创建一个二维列表的时候,我之前会用 a = [[0] * 5] * 5, 但是这样输出的结果往往会跟期待的不一样,我一直以为是我的程序有问题,百度了很久也不知道错误在哪儿,后来看见别人的解法,自己换了一个创建并初始化列表的代码,结果就可以运行了,出错的原因就是:[[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用,修改任何一个元素都会改变整个列表.所以我现在常用的方法就是用列

Leetcode刷题记录[python]——344 Reverse String

一.前言 不是计算机专业出身,却有一颗程序猿的心. 昨日开始leetcode第一次刷题,选择了菜鸟方式,从AC率最高且难度为Easy的题开始,不管题是简单还是难,都想做个记录,既是方便以后回顾,又是以此作为一个激励,督促自己每天都能有所进步. 二.题344 Reverse String Write a function that takes a string as input and returns the string reversed. class Solution(object): def

周刷题第一期总结(two sum and two numbers)

由于深深的知道自己是事件驱动型的人,一直想补强自己的薄弱环节算法,却完全不知道从哪里入手.所以只能采用最笨的办法,刷题.从刷题中遇到问题就解决问题,最后可能多多少少也能提高一下自己的渣算法吧. 暂时的目标是一周最少两道,可能会多做多想,工作再忙也会完成这个最低目标. Two sum: Given an array of integers, return indices of the two numbers such that they add up to a specific target. Y