巧用Hint

一般计算fibonacci的方法:

1 def fibonacci (n):
2     if n == 0 or n == 1:
3         return 1
4     else:
5         return fibonacci(n-1) + fibonacci(n-2)

这样的 call graph for fibonacci with n=4:

当计算 fibonacci(30)的时候还可以,当计算 fibonacci(50)的时候就很慢了。

好的方法是:用dict记录下来之前计算过的值。

A previously computed value that is stored for later use is called a hint.

好的方法是:

previous = {0:1, 1:1}
def fibonacci(n):if previous.has_key(n):return previous[n]else:newValue = fibonacci(n-1) + fibonacci(n-2)previous[n] = newValuereturn newValue

这样就很快了。

 

类似的计算阶乘:

previous = {1:1,2:2}
def n(i):if previous.has_key(i):return previous[i]else:newValue = i*n(i-1)previous[i] = newValuereturn previous[i]

---How to Think Like a Computer Scientist(Learning with Python)

转载于:https://www.cnblogs.com/eagle-chen/p/4260744.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1816. 截断句子

文章目录1. 题目2. 解题1. 题目 句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。 例如,"Hello World"、"HELLO"…

脸书令牌怎么使用_网工知识角|QOS技术令牌桶算法一分钟速记,考试无忧

点上方蓝字关注公众号,坚持每天技术打卡学网络,就在IE-LAB国内最著名的高端网络工程师培养基地QOS是网络服务质量技术,是所有考试中都会有的考点,主要在SP的课程中详述,是高中低级的网工都有必要了解的技术。今天我们来…

vivox27升级鸿蒙,vivo x27 系统更新好吗?

3月19日,vivo在三亚正式发布了vivo X27和vivo X27 Pro两款产品,继续采用了升降式摄像头以实现“真全面屏”。vivo X27配备了一块6.39英寸super AMOLED屏幕,比例为19.5:9,屏占比达到了91.6%,并应用了第六代屏幕指纹HD版…

根据XML更新Userprofile

#  Using powershell code, update the user profile base on the XML file.#  Date: 2015-01-29 # Update New User Property$snapin Get-PSSnapin | Where-Object {$_.Name -eq Microsoft.SharePoint.Powershell} if ($snapin -eq $null) { Write-Host "L…

LeetCode 1817. 查找用户活跃分钟数(哈希)

文章目录1. 题目2. 解题1. 题目 给你用户在 LeetCode 的操作日志,和一个整数 k 。 日志用一个二维整数数组 logs 表示,其中每个 logs[i] [IDi, timei] 表示 ID 为 IDi 的用户在 timei 分钟时执行了某个操作。 多个用户 可以同时执行操作,单…

日期传递过程_买东西别再只看生产日期和保质期了!快算算你一天吃了多少添加剂?...

开始今天的科普前,微医君先和大家讲一下我们办公室上周出现的“假”全麦面包事件。全麦面包是很多减肥人士最热衷的食物之一,小A也不例外。结果上周微医君帮她买面包时,就发现小A平时经常买的全麦面包是“假”的。为什么明明包装上写着“全麦…

第二次打开不是最大_舵手图解:大盘日线第二次形成买点信号

吾股舵手个人微信公众号:股民读书会(ID:gumindushuihui)声明:只做客观解读,不做主观预测,仅供参考,不作交易依据。择时看大盘,选股看行业。股票咨询请在文末留言。大盘涨…

Window phone用手机来控制电脑的多媒体播放

为了用电脑看电影时方便控制,我就突发其想,做一个手机app来通过无线网络远程调节电脑上的音量。后来进行尝试成功后,我就想,光是调音量似乎单调了些,就把播放/暂停,上一首,下一首,等…

华为正式发布鸿蒙智慧屏,5499 元、21999 元,2021 款华为智慧屏 V55/V85 明日 0 点正式开售:搭载鸿蒙系统...

IT之家 5 月 28 日消息 在今年 4 月份的华为全屋智能及智慧屏旗舰新品发布会上,华为智慧屏 V 系列 2021 款正式发布。新产品外观更加简洁,底部音响组件进一步隐藏,同时依旧采用弹出式 2400 万像素 AI 摄像头。今天,华为官方宣布&a…

LeetCode 1818. 绝对差值和(二分查找)

文章目录1. 题目2. 解题前三题&#xff0c;拼手速。最后一题暴力超时。1. 题目 给你两个正整数数组 nums1 和 nums2 &#xff0c;数组的长度都是 n 。 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|&#xff08;0 < i < n&#xff09;的 总和&a…

python那些事儿编程技巧_python一些编程技巧(持续更新)

def xxx(x1,x2,n3):#一般函数中会传递数一个或数个可变参数以及一个默认位置参数#可变参数 *kargdef xxx(*xx):s0for i in xx:sireturn s#可以在函数中输入一个或多个变量&#xff0c;系统默认将多个变量组成tuple来处理num[1,2,3,4]print(xxx(*num)) #如果参数就是个列表&…

python获取股票数据_python根据股票代码获取当前数据

1.[代码][Python]代码 #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 import re import datetime def getStockInfo(url): """根据url获取信息""" stockList [] request urllib2.Request(url) response urllib2.urlopen(req…

struts2 中文乱码问题,自定义过滤器通用解决方法

问题描述 在JSP中使用form表单向后台action中传递中文参数&#xff0c;后台action接收到参数出现中文乱码。JSP页面统一采用了utf-8编码格式。由于struts2默认采用的编码为utf-8&#xff0c;根据官方文档的提示,编码格式改为GBK,就能解决中文乱码。遂改之。但是&#xff0c;改为…

LeetCode 1819. 序列中不同最大公约数的数目

文章目录1. 题目2. 解题1. 题目 给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。 例如&#xff0c;序列 [4,6,16] 的最大公约数是 2 。 数组的一个 子序列 本质是一个序列&#xff0c;可以通过删除数组中的某些元素…

python concat_python-pd.concat()不合并在同一索引上

我有一个包含称为fcst的预测的df,如下所示&#xff1a; yhat yhat_lower yhat_upper ds 2015-08-31 -0.443522 -19.067399 17.801234 2015-09-30 6.794625 -31.472186 46.667981 ... 进行此转换后&#xff1a; fcst2 fcst["yhat"].to_frame().rename(columns{"…

1803无法升级到2004_汽车排放国标是什么意思:1/2/3/4/5/6的升级是为了什么?

全球各大汽车工业强国或地区都有汽车排放制造标准&#xff0c;知名度较高的有以下四组。美标欧标日标国标在上述标准中欧洲与日本开始实施的节点比较早&#xff0c;美国轻型汽车排放法规「Tier」与上世纪90年代开始实施&#xff0c;国标则是从2000年才开始。之所以要为汽车制造…

LeetCode LCP 28. 采购方案(排序 + 二分查找)

文章目录1. 题目2. 解题1. 题目 小力将 N 个零件的报价存于数组 nums。 小力预算为 target&#xff0c;假定小力仅购买两个零件&#xff0c;要求购买零件的花费不超过预算&#xff0c;请问他有多少种采购方案。 注意&#xff1a;答案需要以 1e9 7 (1000000007) 为底取模&…

html中输出语句怎么写,JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)...

JavaScript 输出JavaScript 没有任何打印或者输出的函数。JavaScript 显示数据JavaScript 可以通过不同的方式来输出数据&#xff1a;使用 window.alert()弹出警告框。使用 document.write()方法将内容写到 HTML 文档中。使用innerHTML写入到 HTML 元素。使用 console.log()写入…

c语言中阶乘相加怎么表示_c语言中如何计算n的阶乘

c语言计算n阶乘的方法&#xff1a;首先创建一个脚本文件&#xff0c;并编写头文件&#xff1b;然后定义一个“i”变量用来循环&#xff0c;以及定义变量“n”&#xff1b;接着用“sum”来保存结果&#xff1b;最后运行该脚本文件即可实现n阶乘。C语言中求阶乘的计算其实就是从1…

@service注解_Spring 中 @Component、@Service 等注解如何被解析?

前言Component和Service都是工作中常用的注解&#xff0c;Spring如何解析&#xff1f;1.Component解析流程找入口Spring Framework2.0开始&#xff0c;引入可扩展的XML编程机制&#xff0c;该机制要求XML Schema命名空间需要与Handler建立映射关系。该关系配置在相对于classpat…