C#递归的详细说明

问题描述

最近我遇到递归的算法,因为自己一直搞不懂什么方法的执行过程~希望有前辈好好给我讲讲,最好带一个详细的例子,感谢了

解决方案

解决方案二:
递归,简单说就是自己调用自己,直到执行循环终止
解决方案三:
本帖最后由 caozhy 于 2012-05-29 00:08:36 编辑
解决方案四:
这个确实是最基本的一个递归,应该没有比这更通俗易懂的了。引用2楼的回复:

比如计算1+2+3+...+100我们有一个函数sum(max),1+2+3+...+100记作sum(100)那么sum(100)=sum(99)+100,也就是1~100的和可以表示为1~99的和加上100,这个能理解么?而sum(99)可以表示成sum(98)+99因此,我们可以写如下的函数sum(max)=sum(max-1)+max同时,我……

解决方案五:
其实递归就是数学归纳法在程序上的实现。
解决方案六:
比如遍历一棵树(典型的,我们要在C盘中寻找一个文件),使用递归是最容易理解的。你可以把寻找C盘下某文件的问题分解为,寻找C盘下每个文件夹下是否有这样的文件,以及C盘本身有没有这样的文件。而对于每个文件夹来说,它又可以分解为,它自身文件夹下的文件夹是否有这样的文件,以及自身文件夹是否有这样的文件,伪代码如下:findfolder(foldername){foreach(folderinfoldername){findfolder(folder)}finditself}

时间: 2024-10-10 01:49:12

C#递归的详细说明的相关文章

帮我看下下面的递归,跪求大神帮我详细解答一下。

问题描述 帮我看下下面的递归,跪求大神帮我详细解答一下. //数列1,1,2,3,5,8,13,21,34... ...求第n项 class FuncDemo11 { public static void main(String[] args) { System.out.println(getNData(8)); } public static int getNData(int n) { if(n==1||n==2) return 1; return getNData(n-1)+getNData

大神,C++代码递归代码求详细注释,特别是if中的看不懂,谢谢了

问题描述 大神,C++代码递归代码求详细注释,特别是if中的看不懂,谢谢了 void foo(int x, int y) { if (x > 1000) return; if (x == y && x == 1) { printf("%d %d ", 1, 1); foo(x + y, x); return; } else { printf("%d ", x); foo(x + y, x); } } 解决方案 void foo(int x, i

c++-一个关于递归的小程序,理解不了其输出结果。。。。。

问题描述 一个关于递归的小程序,理解不了其输出结果..... 一个c++递归的小程序,其输出结果理解不了,请问这个递归的基例是"cout<<endl;"这个吗? void f(char ch){ if (('A' <= ch) && (ch <= 'H')){ f(ch - 1); cout << ch; } else cout << endl; } int main(){ f('C'); } 输出结果为: (空一行) A

Chord算法实现详细

背景 Chord算法是DHT(Distributed Hash Table)的一种经典实现,以下从网上无节操盗了一段介绍性文字: Chord是最简单,最精确的环形P2P模型."Chord"这个单词在英文中是指"弦",在分布式系统中指"带弦环",在P2P领域则指基于带弦环拓扑结构的分布式散列表(DHT)或者构建与其上的P2P网络.虽然MIT和UC Berkeley的研究早在2001年之前就开发了Chord及其应用系统,但有关Chord的正式论文[S

Java集合学习(十二) TreeMap详细介绍(源码解析)和使用示例

这一章,我们对TreeMap进行学习. 第1部分 TreeMap介绍 TreeMap 简介 TreeMap 是一个有序的key-value集合,它是通过红黑树实现的. TreeMap继承于AbstractMap,所以它是一个Map,即一个key-value集合. TreeMap 实现了NavigableMap接口,意味着它支持一系列的导航方法.比如返回有序的key集合. TreeMap 实现了Cloneable接口,意味着它能被克隆. TreeMap 实现了java.io.Serializabl

二叉树递归和非递归遍历

二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的.二叉树有前.中.后三种遍历方式,因为树的本身就是用递归定义的,因此采用递归的方法实现三种遍历,不仅代码简洁且容易理解,但其开销也比较大,而若采用非递归方法实现三种遍历,则要用栈来模拟实现(递归也是用栈实现的).下面先简要介绍三种遍历方式的递归实现,再详细介绍三种遍历方式的非递归实现. 一.三种遍历方式的递归实现(比较简单,这里不详细讲解) 1.先序遍历--按照"根节点-左孩子-右孩子"的顺序进行访问. vo

全排列的递归与非递归实现浅析

全排列问题在公司笔试的时候很常见,这里介绍其递归与非递归实现. 递归算法 1.算法简述 简单地说:就是第一个数分别以后面的数进行交换E.g:E = (a , b , c),则 prem(E)= a.perm(b,c)+ b.perm(a,c)+ c.perm(a,b)然后a.perm(b,c)= ab.perm(c)+ ac.perm(b)= abc + acb.依次递归进行. void swap(string &pszStr,int k,int m) { if(k==m) return ; c

如何利用SQL Server With As递归获取层级关系数据

WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会 被整个SQL语句所用到.有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数 据的部分. 特别对于UNION ALL比较有用.因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高, 所以可以使用WITH AS短语,则只要执行一遍即可.如果WITH AS短语所定义的表

VC的CTreeCtrl类的递归使用

本文是对第20期中"遍历文件夹并建成目录树"一文的补充. CTreeCtrl是可是化编程中很实用的一个类,可以用于目录结构.层次结构.属性结构,尤其是在显示文件目录结构时更是应用广泛.看了第20期北京林业大学的李少杰朋友的一篇"遍历文件夹并建成目录树",觉得深有感触,初学VC时确实CTreeCtrl类很难掌握:至于对"树的遍历",也是数据结构的一个难点.李朋友的那篇文章解决了如果用CTreeCtrl显示目录结构,在他程序中,没有能够完善解决如何递