2.4 C#语法的学习(四) && 递归
2021/4/25 20:27:07
本文主要是介绍2.4 C#语法的学习(四) && 递归,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
递归是一个对初学者来说不太好理解的概念,要我说的话,我觉得像俄罗斯套娃,像下面这种图。
递归是不停的调用自己,并在达到某个条件的时候停止递归,返回结果。
我们尝试下解决这样的问题:斐波那契数列
斐波那契数列的排列是:0,1,1,2,3,5,8,13,21,34,55,89,144……它后一个数等于前面两个数的和。在这个数列中的数字,就被称为斐波那契数。现在想计算第n个斐波那契数是多少?
第n个斐波那契数=第n-1个斐波那契数+第n-2个斐波那契数
第n-1个斐波那契数=第n-2个斐波那契数+第n-3个斐波那契数
第n-2个斐波那契数=第n-3个斐波那契数+第n-4个斐波那契数
.......
没完没了┌(。Д。)┐
但是!它也会有结束的地方:第1个斐波那契数=0,第2个斐波那契数=1。
所以整件事情就变成了:
求第n个斐波那契数,就要求第n-1个斐波那契数和第n-2个斐波那契数;
求第n-1个斐波那契数,就要求第n-2个斐波那契数和第n-3个斐波那契数;
.......
求第3个斐波那契数,就要求第1个斐波那契数和第2个斐波那契数;
求第1个斐波那契数返回0,求第2个斐波那契数返回1。
而求第x个斐波那契数的方法是一模一样的。现在我们就可以开始写代码了:
internal static int GetFibonacciNumber(int n) { if (n > 2) { //递归:获得n-1和n-2的数 return GetFibonacciNumber(n - 1) + GetFibonacciNumber(n - 2); } //n=1返回0,n=2返回1 return n-1; }
如果依然不能理解,可以通过调试,看看程序是怎么走的,帮助自己理解。
当n=4时,执行代码段return GetFibonacciNumber(3) + GetFibonacciNumber(2);
(1)先调用GetFibonacciNumber(3),执行代码段return GetFibonacciNumber(2) + GetFibonacciNumber(1);
GetFibonacciNumber(2)返回1,GetFibonacciNumber(1)返回0
之后GetFibonacciNumber(3)返回1
(2)再调用return GetFibonacciNumber(3) + GetFibonacciNumber(2);中的GetFibonacciNumber(2),返回1
(3)最后计算GetFibonacciNumber(3) + GetFibonacciNumber(2),返回2
实际上部分问题用循环、递归都可以解决,但部分问题只能使用递归解决,所以掌握递归的思想是非常重要的。递归更多的用在,我们也不知道什么时候“结束”的情况下。
示例代码
FibonacciNumber
这篇关于2.4 C#语法的学习(四) && 递归的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID
- 2024-01-23用CI/CD工具Vela部署Elasticsearch + C# 如何使用
- 2024-01-23.NET开源的简单、快速、强大的前后端分离后台权限管理系统