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

目的:动手做小程序

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

    }
}

 

    原文作者:递归算法
    原文地址: https://blog.csdn.net/xifeijian/article/details/8498554
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞