C#经典面试题——递归运算
Posted yanguoliumao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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是多少。
以上是关于C#经典面试题——递归运算的主要内容,如果未能解决你的问题,请参考以下文章