这是斐波那契数 中用迭实现的

(define (fib n) (fib-iter 1 0 n))

(define (fib-iter a b count)
(if(= count 0)
b
(fib-iter (+ a b) a (- count 1)))
)

下面关于它的应用 换零钱方式的统计

(define (count-change amount)
(cc amount 5)
)
(define (cc amount kinds-of-coins)
(cond((= amount 0) 1)
((or (< amount 0)(= kinds-of-coins 0)) 0)
(else (+ (cc amount (- kinds-of-coins 1))
(cc (- amount (first-denomination kinds-of-coins))
kinds-of-coins
)
))
)
)

(define (first-denomination kinds-of-coins)
(cond ((= kinds-of-coins 1) 1)
((= kinds-of-coins 2) 5)
((= kinds-of-coins 3) 10)
((= kinds-of-coins 4) 25)
((= kinds-of-coins 5) 50)
)
)

对于一种算法最关键的一点还是书上所说:如果a(为兑换的总额)为0的话,应该算作是有一种换零钱的方式!

如果a小于0的话应该算作有0中的换钱方式

如果n(为可以使用的兑换面额)为0的话,应该算作是有0种换零钱的方式!

其实,最关键的是第一点,一直挺想不通的,为什么,当兑换的面额为0的话,却又有一种换零钱的方式! 如果,没有这条的话,那么迭代是没有结果的!

上面的运行结果是 “292” !

据个人猜测最后应该是292 个1 相加的结果!

转载于:https://www.cnblogs.com/neve/archive/2011/04/13/2015331.html

SICP 之斐波那契数相关推荐

  1. 树上问题 ---- E. Fib-tree(斐波那契数的性质 + 暴力模拟 + 认真计算复杂度)

    题目大意: 一个树是FIBFIBFIB树得是节点个数为斐波那契数,且(注意这个且)!!此外满足下面条件一个: 1.只有一个点 2.可以切一条边使得分出的两个子树都是FIBFIBFIB树. 给你一棵树, ...

  2. 算法----斐波那契数

    題目 斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 .该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0,F(1) = 1 F ...

  3. 动态规划学习之三种方法解决斐波拉契数

    斐波拉契数是一个很经典的问题,也会很多公司面试的考题,每个学习计算机的同学都会接触这个问题,尤其是在学习递归的时候,利用递归来解决斐波拉契数是很多教材采用的一个例子,所以很多同学一想到斐波拉契马上就会 ...

  4. LeetCode-动态规划基础题-509. 斐波那契数

    描述 题目如下: 509. 斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 .该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0 ...

  5. 阶乘与斐波那契数的理解

    在算法导论第三章中,提到了阶乘和斐波那契数,颠覆或者说是加深了我以前对这两种数的理解.以前是无法想象这个数有多大,但现在是有了一个概念. 阶乘 阶乘的定义为 n!= n>0?1:n*(n-1)! ...

  6. [算法学习]斐波那契数的计算

    决定开始看algorithms,而且尽量多思考,多写点代码.第一个碰到的算法就很具有启发性,一些看似正确的算法,实际的复杂度却很高.我们直接看问题: 问题:假设fibonacci(0)=0,fibon ...

  7. 【快乐水题】509. 斐波那契数

    原题: 力扣链接:509. 斐波那契数 题目简述: 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 .该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F( ...

  8. hdu4099(斐波那契数+字典树)

    题意: 给出一个数字n,在斐波那契数列中找到一个最小下标,满足这个斐波那契数是以n为前缀,输出这个下标. 思路: 高精度+字典树+1000000000000000进制.后来知道在斐波那契数很大的时候, ...

  9. 算法笔记_001:斐波那契数的多种解法(Java)

    本篇文章解决的问题来源于算法设计与分析课程的课堂作业,主要是运用多种方法来计算斐波那契数.具体问题及解法如下: 一.问题1: 问题描述:利用迭代算法寻找不超过编程环境能够支持的最大整数的斐波那契数是第 ...

最新文章

  1. XCODE 6.1.1 配置GLFW
  2. 【深度学习】RetinaNet 代码完全解析
  3. centos redis验证_centos7下安装redis-4.0.2
  4. 百练2810:完美立方
  5. esp8266接收到的数据如何存放到数组中_Java中HashMap的实现原理
  6. python asyncio和celery对比_如何将Celery与asyncio结合起来?
  7. 32f4 usb 升级程序_不断中招的你还放心升级win10吗?wi10近期更新问题及解决办法...
  8. 如何从硬件到防火墙设置homelab
  9. 分布式光伏补贴_2018年国家光伏并网补贴标准、政策
  10. iphone通知和android,手机App 通知数量太多,让你备感压力吗?教你如何消除令人心烦的信息通知(iPhone、Android)...
  11. selenium环境搭建,浏览器驱动安装
  12. 《avascript 高级程序设计(第三版)》 ---第三章 基本概念2
  13. java笔记_2020年java程序员、java工程师必备资料(内含java学习思维图、视频教程、源码笔记等)...
  14. LeetCode Number of Segments in a String
  15. 有关科学计算方面的python解决
  16. JSP学生日常记账系统综合课程设计报告
  17. Kubernetes 节点弹性伸缩开源组件 Amazon Karpenter 实践:部署GPU推理应用
  18. 递推和递归:一个自下而上,一个自上而下
  19. android 格式化sd咔_如何在Android中格式化SD卡 | MOS86
  20. 白帽子讲Web安全(一)浏览器安全

热门文章

  1. 芯片的反向流程是怎么样的?
  2. kafka的使用场景(转载+自己笔记)
  3. LookupError: No installed app with label 'user'
  4. 改变libreOffice的Calc的背景颜色
  5. Caused by: java.net.UnknownHostException: ubuntu: Name or service not known
  6. 腾讯实习笔试:关于几个有序数组求交集的问题
  7. OpenCV学习笔记六-提高对比度
  8. Flutter:尝试撸一个具有惯性跟阻力的旋转控件或用传感器控制其旋转
  9. git 清除 另一个git进程似乎在这个仓库中运行。。。。。
  10. 构建自己的npm包 简单实现