应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

简单递归的分析方法,递归求和,递归算斐波那契数列

4857人阅读 2018/10/8 10:11 总访问:5194174 评论:0 收藏:0 手机
分类: 随笔

一般分析递归需要知道两个要素

1:递归退出条件
2:任意项的递归公式(除开退出条件)

比如递归求和,递归算斐波那契数列这两个很简单的递归算法


斐波那契求第n项的值
f(1)= 1,f(2)= 1  (递归退出条件)

f(n) = f(n-1)+f(n-2);(任意项的递归公式)

可以把n换成具体的数字带进去算

f(3) = f(2)+f(1) = 1+1 =2;

f(4) = f(3)+f(2) = f(1)+f(2)+f(2) = 1+1+1 = 3

  1. /// <summary>
  2. /// 斐波那契求第n项的值
  3. /// </summary>
  4. /// <param name="n"></param>
  5. /// <returns></returns>
  6. public static int FBSum(int n)
  7. {
  8.     if (n == 1 || n == 2)
  9.         return 1;
  10.     return FBSum(n - 1) + FBSum(n - 2);
  11. }

根据写的递归算法看看,第5项的推理过程

FBSum(5) =FBSum(4)+FBSum(3) = FBSum(3)+FBSum(2)+FBSum(2)+FBSum(1)

=FBSum(2)++FBSum(1)+FBSum(2)+FBSum(2)+FBSum(1) = 5



递归求1....n的和

sum(1) = 1     (递归退出条件)

sum(2) = 2+sum(1)

sum(3) = 3+sum(2)

根据上面的分析可得任意项的递归公式

sum(n) = n+sum(n-1);(任意项的递归公式)

  1. /// <summary>
  2. /// 递归函数求和
  3. /// </summary>
  4. /// <param name="n"></param>
  5. /// <returns></returns>
  6. public static int Sum(int n)
  7. {
  8.     if (n == 1)
  9.         return 1;
  10.     return Sum(n - 1) + n;
  11. }



递归实现Python蓝桥杯的一道纸张尺寸的题目

【问题描述】

在 ISO 国际标准中定义了 A0 纸张的大小为 1189 mm × 841 mm ,将 A0 纸

沿长边对折后为 A1 纸,大小为 841 mm × 594 mm ,在对折的过程中长度直接取

下整(实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸,依此类推。

输入纸张的名称,请输出纸张的大小。

【输入格式】

输入一行包含一个字符串表示纸张的名称,该名称一定是 A0 、 A1 、 A2 、

A3 、 A4 、 A5 、 A6 、 A7 、 A8 、 A9 之一。

【输出格式】

输出两行,每行包含一个整数,依次表示长边和短边的长度。

【样例输入 1 】

A0

【样例输出 1 】

1189

841

【样例输入 2 】

A1

【样例输出 2 】

841

594


这道题题目也比较简单,递归退出条件分析:

A0 = 1189,841

每项的递归规律分析:

A1 = A0.width,A0.height/2

An = A(n-1).widht,A(n-1).hegiht/2

然后就可以写算法了,其实分析出来后算法就很简单了

  1. ## 递归实现纸张大小
  2. def paperfunc(n):
  3.     if (n==0):
  4.         return [1189,841]
  5.     return [paperfunc(n-1)[1],paperfunc(n-1)[0]//2]
  6. result = paperfunc(3)
  7. print(result[0])
  8. print(result[1])



实际运用递归解析树什么的:https://www.tnblog.net/aojiancc2/article/details/4785


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

css弹性盒子flex布局

css弹性盒子由于版本不同浏览器问题造成了一些不同的写法display:flexbox;在google浏览器中如果使用下面的写法就不行displa...

可输入下拉文本框据输入动态加载数据 jquery-editable-select

用到一个jquery-editable-select的控件github地址:https://github.com/indrimuska/jquery-editable-select这个插件的原理是...

.net mvc分部页.net core分部页

.net分部页的三种方式第一种:@Html.Partial(&quot;_分部页&quot;)第二种:@{ Html.RenderPartial(&quot;分部页&quot;);}...

css中单位pxemrem和vh/vw的理解

&gt;px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。em是相对长度单位。相对于当前对象内文本的字...

让IIS支持webp格式图片让IIS支持vtt格式iis设置mime类型iis配置支持的类型

webp格式图片可以让图片体积变小。也让下载图片变得更加困难一点 在线制作webp工具 https://www.upyun.com/webp?utm_mediu...

网页上传文件断点续传的实现无视文件大小上传以及datatables基本用法

首先明白js是客户带执行代码,c#是服务器上执行代码。本地文件需要用到js处理,服务器端接受c#代码处理1.HTML页面,文件信...

如何使用图标像使用文字一样使用文本图标的方法

1.首先在Iconfont-阿里巴巴矢量图标库上面找到你需要的图标然后加入你的购物车然后选择图标;注意:每个类型的图标会大小不...

使用七牛云的cdn服务提高图片的加载速度

CDN介绍CDN的全称是Content Delivery Network,即内容分发网络。CDN加速主要是加速静态资源,如网站上面上传的图片、媒体,...

通俗易懂什么是.NET?什么是.NET Framework?什么是.NET Core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

JS监听input、keydown有输入法时打字完成后触发事件

在给输入框绑定input或keydown事件时预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件可以用到c...

修改了css后让浏览器从缓存中更新

当我们修改了css后,如果不做一些操作,浏览器是不会自动更新我们的样式文件的。除非是过期或者用户手动刷新清理缓存等。所...

C MVC RedirectToAction跳转时候传递参数Action之间传值

MVC Action之间传值,页面跳转传值方法一:路由传值很简单直接使用 RedirectToAction(string actionName, string controller...

当你工作遇到以下几种状态时请果断跳槽走人

已经有想跳槽的念头,但是一直磨磨蹭蹭、犹犹豫豫的混日子,这种念头或者一直持续,或者是不是冒出头来占据你的思维了。于...

C与Java二进制编码转换补码

在C#与Java接口对接时,需要将图片转化为二进制编码传输,这时候发现c#转换出来的编码的值是0~255的范围,而java方需要的是...