bycj.net
当前位置:首页 >> C#:递归、REturn,为何会出现这样的几个 >>

C#:递归、REturn,为何会出现这样的几个

对递归的看法不能仅限于你所说的走这句走那句的,递归实际就是对栈的运用.第一次 GetCount(3) 执行到GetCount(inVal - 1);后进入GetCount(2),还有一个操作就是将此时的Console.WriteLine("{0}", inVal);此时的值为3,压入栈.以此类推,整个过程压入3次,顺序是3,2,1.而栈的原则是先进后出,所以return回来的结果应该是 1,2,3

if语句一般要写{},如果不写它会对之后的第一行代码起作用,if (a == 0) return; 相当于 if (a == 0){ return;} 初始值为3 没有满足a == 0当然会递归下去了.

一个方法可能需要返回数据,这时候就用return返回,如果返回类型为void,是可以不用返回的 举个例子12345678910111213 //求两个int中较大的一个数字 publicintMax(intnum1, intnum2) { if(num1 > num2) returnnum1; returnnum2; } //输出名字

public int cha(int[] num, int left, int right, int ind) { if (num[(left + right) / 2] == ind) { return (left + right) / 2; } else { if (num[(left + right) / 2] > ind) { return cha(num, left, (right + left) / 2, ind); } else { return cha(num, (right + left) / 2,right, ind); } } }

return true的含义就是“结束当前这个函数”,仅此而已.之后程序就会回到之前的调用点的下一步开始继续执行.你所说的”跳出这一层递归还是跳出整个递归“只是由你自己程序的写法决定的,具体需要几自己判断.例如 fa(n) { if(n==1)

Public WordType GetWordClass(List<WordType> wt){ foreach(WordType item in wt) { if(item.id.ToString() == this.treeview1.SelectNode.Name){ return item; }else { return GetWordClass(item.list); //item.list 是这个对象中的本类的子对象 } } }试试这样?

递归就是重复调用.只是每次调用的参数可能不同.就拿你说的这个计算阶乘的方法来说;当n=5时,调用fact(5),因为5不小于1,所以返回5*fact(4);由于4也不小于1,所以fact(4)返回4*fact(3),整个式子返回5*4*fact(3);一次类推,最后会得到5*

这个直接看return所在的位置,还有就是怎样会进行递归,当不满足递归条件时,在这最后的那个return就是整个函数的出口,否则就只是终结前一递归

public static int Foo(int i) { if (i <= 0) return 0; // 小于0 的返回0 else if(i > 0 && i <= 2) return 1; // 前两位数都是1 else return Foo(i -1) + Foo(i - 2); // 从第三位数开始 等于前两位的和,如果i-1位数是第一位或者第二位数就返回1 如果不是继续返回

递归就是重复调用.只是每次调用的参数可能不同.就拿你说的这个计算阶乘的方法来说;当n=5时,调用fact(5),因为5不小于1,所以返回5*fact(4);由于4也不小于1,所以fact(4)返回4*fact(3),整个式子返回5*4*fact(3);一次类推,最后会得到5*

jinxiaoque.net | pznk.net | xmlt.net | wkbx.net | clwn.net | 网站首页 | 网站地图
All rights reserved Powered by www.bycj.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com