一个经典的递归算法题(实例+源码)

目的:动手做小程序

需求:这里有一组数:1、1、2、3、5、8、13、21、34、55......要求计算用这个递归算法,计算出这组数的第40个数是多少?

斐波纳契数列的定义:它的第一项和第二项均为1,以后各项都是前两项之和。

分析:分析这组数的规律,可以得知,每个数字是它之前两个数字之和(若该数前面不足两个数,则不足的数缺省为0)

实现:按照下图,在窗体中添加4个lable控件,用来显示文本和计算结果,1个button控件,1个textBox控件,控件的name属性和text属性值可以参考下面的图和源代码。

以下是可参考的程序源代码(C#):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Arithmetic
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}

private void btn_Cal_Click(object sender, EventArgs e)
{
int P_int_temp;//定义整型变量
if (int.TryParse(txt_value.Text, out P_int_temp))//为变量赋值
{
lb_result.Text =Get(P_int_temp).ToString();//输出计算结果
}
else
{
MessageBox.Show(//提示输入正确数值
"请输入正确的数值!", "提示!");
}
}

/// <summary>
/// 递归算法
/// </summary>
/// <param name="i">参与计算的数值</param>
/// <returns>计算结果</returns>
int Get(int i)
{
if (i <= 0)//判断数值是否小于0
return 0;//返回数值0
else if (i >= 0 && i <= 2)//判断位数是否大于等于0并且小于等于2
return 1;//返回数值1
else//如果不满足上述条件执行下面语句
return Get(i - 1) + Get(i - 2);//进行递归运算,返回指定位数前两位数的和
}

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值