c#经典面试题——递归运算(代码片段)

yanguoliumao yanguoliumao     2023-01-11     182

关键词:

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

 

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是多少。

递归经典面试题_小例(代码片段)

主要内容如下:1privatevoidbutton1_Click(objectsender,EventArgse)23//按钮事件4intvalue;5if(int.TryParse(textBox1.Text,outvalue))6label2.Text=function(value).ToString();7else8MessageBox.Show("请输入正确的数","提示:");9 查看详情

js经典面试题汉诺塔(代码片段)

我爱撸码,撸码使我感到快乐!大家好我是Counter。今天给大家分享的是利用JS将汉诺塔原理实现出来,其实主要是考察一个递归的思想,复杂的问题简单化,汉诺塔应该都知道吧,具体的游戏规则,可以百度查查,这边就不赘述... 查看详情

二狗的面试题整理其二(代码片段)

...归计算出1,1,2,3,5,8,13...第三十位是多少?  很经典的斐波那契数列,用递归实现也比较容易。其实只需要在递归时额外传入一个depth参数,来计 查看详情

c#经典面试题100道

1..NET和C#有什么区别答:.NET一般指.NETFrameWork框架,它是一种平台,一种技术。C#是一种编程语言,可以基于.NET平台的应用。2.一列数的规则如下:1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。答:publicclas... 查看详情

递归题正确的打开方式,面试官听了都说精辟(代码片段)

前言递归,是一个非常重要的概念,也是面试中非常喜欢考的。因为它不但能考察一个程序员的算法功底,还能很好的考察对时间空间复杂度的理解和分析。本文只讲一题,也是几乎所有算法书讲递归的第一题,但力争讲出花来... 查看详情

oracle经典面试题(代码片段)

第一题createtabletest(idnumber(10)primarykey,typenumber(10),t_idnumber(10),valuevarchar2(6));insertintotestvalues(100,1,1,‘张三‘);insertintotestvalues(200,2,1,‘男‘);insertintotestvalues(300,3,1,‘50‘);insert 查看详情

python经典面试题(代码片段)

1、方法和函数的区别fromtypesimportMethodType,FunctionTypeclassA:deffunc(self):passa=A().funcb=A.funcprint(isinstance(a,FunctionType))print(isinstance(b,FunctionType))print(isinstance(a,MethodType))print(isinst 查看详情

leetcode:面试题08.05.递归乘法(代码片段)

面试题08.05.递归乘法题目要求:递归乘法。写一个递归函数,不使用*运算符,实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。 解题思路:思路1:直接将乘法分成多个n相加,比较直接暴力;判断其中较... 查看详情

几个面试经典算法题java解答(代码片段)

                 几个面试经典算法题Java解答题目一:publicclasstestClockwiseOutput//顺时针打印一个矩阵@Testpublicvoidtest()int[][]num=newint[100][100];intn=4;intcount=1;for(inti=0;i<n;i++ 查看详情

经典面试题(代码片段)

查重(1)利用for循环需要45次(2)利用对象不能有同一个属性需要10次 冒泡排序 数组的去重 字符串的去重 统计字符串出现最多的次数 查找没有重复的字符串 深度拷贝 圣杯模式 insertAfter方法查找数组里... 查看详情

javascript经典面试题详解(代码片段)

以下是我遇到的一些经典的JS面试题,结合我自己的理解写的详解,主要参考高程一书,欢迎大家批评指正1. vara;console.log(a);  答:运行结果为打印undefined。首先,以上代码完全运行的话需要引擎,编译器,作用域的配... 查看详情

一些经典的递归题(代码片段)

写递归题一定要考虑两个要素:递归终止条件和迭代条件目录汉诺塔问题子字符串问题字符串全排列逆序栈汉诺塔问题问题描述现在有三个柱子,编号A,B,C.现在有n个圆盘,规定圆盘只能把小圆盘放在大圆盘上(不... 查看详情

c语言经典面试题(代码片段)

1.分析下面代码有什么问题?123456void test1() char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );字符串str1需要11个字节才能存放下(包括末尾的’ 查看详情

数据库子查询经典面试题(代码片段)

数据库】SQL经典面试题-数据库查询-子查询应用二 发布于1年前  作者 tommy  575次浏览  最后一次编辑是10个月前  来自数据库上节课我们通过子查询,完成了查询的最高分学生的需求,今天我... 查看详情

c++经典面试题汇总(代码片段)

1.下面代码输出什么?为什么?(初始化列表)#include<iostream>usingnamespacestd;classTestintm_i;intm_j;public:Test(intv):m_j(v),m_i(m_j)intgetI()returnm_i;intgetJ()returnm_j;;intmain()Testt1(1);Testt2(2);cou 查看详情

经典面试题二二叉树的递归与非递归遍历(前序中序后序)

http://www.cnblogs.com/SHERO-Vae/p/5800363.html 【写在前面】  二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就... 查看详情

面试题经典版(代码片段)

面试题一、JAVA基础1.==和equals的区别?2.说说抽象类和接口3.重写和重载的区别4.public,protected,private的作用范围5.常见的异常类有哪些?6.什么是反射?有什么作用?7.你知道java8的新特性吗,请简... 查看详情

经典指针和数组面试题详解(代码片段)

指针和数组笔试题1. intmain() inta[5]=1,2,3,4,5; int*ptr=(int*)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); system("pause"); return0;(a+1)就是a[1]的地址&#x 查看详情