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

目的:动手做小程序

需求:这里有一组数: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); //进行递归运算,返回指定位数前两位数的和
        }

    }
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值