C#经典面试题——递归运算

今天开始写递归,然而始终不得甚解。借鉴别人的理解:假设我们现在都不知道什么是递归,我们自然想到打开浏览器,输入到谷歌的网页,我们点击搜索递归,然后我们在为维基百科中了解到了递归的基本定义,在了解到了递归实际上是和栈有关的时候,你又蒙圈了,什么是栈呢?数据结构没学清楚,此时的你只能又打开谷歌,搜索什么是栈.接下来你依次了解了内存/操作系统.在你基本了解好知识之后,你通过操作系统了解了内存,通过内存了解了栈,通过栈了解了什么是递归这下你恍然大悟!原来这就是递归啊!

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 Frm_Main : Form
    {
        public Frm_Main()
        {
            InitializeComponent();
        }

        private void btn_Get_Click(object sender, EventArgs e)
        {
            int P_int_temp;//定义整型变量
            if (int.TryParse(txt_value.Text, out P_int_temp))//为变量赋值(此方法的意思是把内部的txt_value.Text转换为int32位的数据,如果转换成功,则返回一个1)
            {
                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,2,3,5,8,12......的第N个数。因此可以先写出N,然后利用递归,从N一直到0,求出结果,然后再反推出N是多少。

猜你喜欢

转载自www.cnblogs.com/yanguoliumao/p/9842270.html
今日推荐