/* (程序頭部注釋開始)
* 程序的版權和版本聲明部分
* Copyright (c) 2011, 煙台大學計算機學院學生
* All rights reserved.
* 文件名稱:一列數規則如下:1,1,2,3,5,8,13,21,34...求第30位數是多少?(用遞歸算法實現)
* 作 者: 雷恆鑫
* 完成日期: 2012 年 09 月 09 日
* 版 本 號: V1.0
* 對任務及求解方法的描述部分
* 輸入描述:
* 問題描述:
* 程序輸出:
* 程序頭部的注釋結束
*/
[csharp]
<span style="font-size:24px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication_do_while
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("這是一個“一列數規則如下:1,1,2,3,5,8,13,21,34...求第30位數是多少?”的程序");
Console.Write("請問您想求第幾位數?");
int number = int.Parse(Console.ReadLine());
int m = f(number);//遞歸函數
Console.WriteLine("第{0}位數為:{1}", number, m);
Console.ReadKey();
}
static int f(int number)//遞歸就是在過程或函數裡調用自身。
{
int fact;
if (number == 0 || number == 1)//使用遞歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口。
{
if (number == 0)//當number等於2是有0這種情況出現
{
fact = 0;
}
else
{
fact = 1;
}
}
else
{
fact = f(number - 1) + f(number - 2);
}
return fact;
}
}
}
</span>
運行結果:
經驗積累:
1.
遞歸是計算機科學中的一種重要方法。
能采用遞歸描述的算法通常有這樣的特征:為求解規模為N的問題,設法將它分解成規模較小的問題,然後從這些小問題的解方便地構造出大問題的解,並且這些規模較小的問題也能采用同樣的分解和綜合方法,分解成規模更小的問題,並從這些更小問題的解構造出規模較大問題的解。特別地,當規模N=1時,能直接得解。