在敲下这些文字的时候,已经是牛年了,大家都忙着互送祝福。
我在这里,写下牛年的第一篇博客,给各位朋友拜年!
祝大家新年快乐、合家欢乐、身体健康、心想事成!
People should not be afraid of their governments. Governments should be afraid of their people.
To view this ariticle in English, please click here.
上一篇文章中简单举例说明了如何使用递归调用来实现阶乘计算,而本篇文章要说的是递归的另外一个经典应用—— Fibonacci 数列。
Fibonacci 数列是指这样一个无穷数列:1, 1, 2, 3, 5, 8 ... 除前两项之外,每一项的值都等于它前面两项之和。
既然 Fibonacci 数列本身就是用递归的方法来定义的,那么我们可以很轻松地用递归来实现它的相关计算。
同计算阶乘一样,所要计算的数值越大,调用的次数越多,而且冗余的递归调用将呈几何级数增长,程序的效率也将越来越低(你可以修改程序,亲自测试一下)。所以你需要根据实际情况,从程序的效率和可读性上作出取舍。
例:打印 Fibonacci 数列的前10项,使用递归调用实现。
代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Fibonacci { class Program { public long Fibonacci(int n) { if (n > 0 && (n == 1 || n == 2)) { return 1; } else { return Fibonacci(n - 1) + Fibonacci(n - 2); } } static void Main(string[] args) { Program p = new Program(); for (int i = 1; i < 11; i++) { Console.Write(p.Fibonacci(i)); } } } }
To view this ariticle in English, please click here.
根据阶乘计算本身的特点,使用递归调用来实现十分方便。
需要注意的是,递归其实是一种效率比较低下的算法,尤其是当运算量比较大的时候,所以在决定是否使用递归调用要根据情况谨慎考虑。
这是我在学习 C# 程序设计语言时做过的一道题目。
例:求 1! + 2! + ... + 10! 并打印出结果,要求使用递归调用实现。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Factorial { class Program { public long Factorial(int n) { if (n == 0 || n == 1) { return 1; } else { return n * Factorial(n - 1); } } static void Main(string[] args) { Program p = new Program(); long sum = 0; for (int i = 1; i < 11; i++) { sum += p.Factorial(i); } Console.WriteLine("1! + 2! + ... + 10! = " + sum); } } } |
这是我在 Code 分类下的第一篇文章。
这个分类主要记录我自己写过的程序或算法,包括学习过程中的一些练习等。
我现在主要学习的是 C#,以后将继续学习 .NET 的其他相关课程。
我使用的 IDE 是 Microsoft Visual Studio 2008,常用编辑器有 Notepad 和 EditPlus。
希望与有着相同专业或兴趣的 Blogger 们一起分享,共同进步。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyFirstPostUnderCode { class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } } } |
这几天把博客重装了一次,也重新整理了一下。
主要的一些更改如下:
改用官方原版,不含汉化包,用了这么久 WordPress,也该换原版了,呵呵。
更换主题为 Js o3 1.0,感谢作者 Jinwen。个人非常喜欢这种简洁的样式,有些地方自己还在慢慢修改。以后可能不会常换主题,只在此基础上改进。
为了美观,首页只显示摘要(RSS 中仍采用全文输出,欢迎订阅)。感谢 大猫 的帮助。
整理页面,只留下必须的5个,豆瓣的收藏秀和 Twitter 暂时先放到 About 里,有时间再整理到侧栏里去(欢迎点击链接过去参观和 follow)。
取消首页的友情链接,全部放入 Links 页面,采用随机方式显示,以后可能会返回部分链接到侧栏。
新增 Gustbook 页面,各位爱灌水爱评论的同学可以畅所欲言了。
为所有文章加上 Tag,Tag Cloud 已经出现。
暂时写这么多吧,继续折腾……
Recent Comments