怎么终止递归?

fihuang 2009-03-20 02:41:23
怎么终止递归?
请看下面的例子:code=C#]
void Digui(string s)
{
Do(s);
}

void Do(string s)
{
//Do something
s=...; //s get new value
if (s!="")
{
Do(s);
}
}[[/code]
上面是当s==""时,这条路上的递归结束,不再往下递归了。
还有其他写法吗?比如:

if (s=="")
{
//类似于break之类的,可以终止递归的
}

谢谢各位指教!
...全文
907 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
terry 2009-03-23
  • 打赏
  • 举报
回复
递归还是方法里调用方法,只不过每一次调的方法相同罢了。

函数返回值类型是void时,不用返回一个结果,我们通常都省略return,。
ljb07976513524 2009-03-23
  • 打赏
  • 举报
回复
break;
terry 2009-03-23
  • 打赏
  • 举报
回复
void Digui(string s)
{
Do(s);
}

void Do(string s)
{
//Do something
s=...; //s get new value
if (s!="")
{
Do(s);
}
return; //
}

加个return就ok了。
  • 打赏
  • 举报
回复
及时有效的跳转 将有助于提升程序的执行效率
---------------------------------------------------------
break 语句用于终止最近的封闭循环或它所在的 switch 语句。
控制传递给终止语句后面的语句(如果有的话)。

continue 语句将控制权传递给它所在的封闭迭代语句的下一次迭代。

goto 语句将程序控制直接传递给标记语句。
goto 的一个通常用法是将控制传递给
特定的 switch-case 标签
或 switch 语句中的默认标签。
goto 语句还用于跳出深嵌套循环。

return 语句终止它出现在其中的方法的执行并将控制返回给调用方法。
它还可以返回一个可选值。
如果方法为 void 类型,则可以省略 return 语句。

throw 语句用于发出在程序执行期间出现反常情况(异常)的信号。
通常 throw 语句与 try-catch 或 try-finally 语句一起使用。
当引发异常时,程序查找处理此异常的 catch 语句。
也可以用 throw 语句重新引发已捕获的异常。
-------------------------------------------------------------


参考链接:
http://www.cnblogs.com/freeliver54/archive/2007/01/30/634620.html
  • 打赏
  • 举报
回复
可以用break,continue,goto等
aron3zx 2009-03-23
  • 打赏
  • 举报
回复
可以

直接

return;
fihuang 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jishengzu 的回复:]
C# code
void Digui(string s)
{
Do(s);
}

void Do(string s)
{
//Do something
s=...; //这里变量处理但s=""时结束当前方法,不过不明白你这样写的意义应为没返回值的,能用来做什么呢
if (s!="")
{
Do(s);
}
[/Quote]就是进行一些操作,是s获得新的值,然后再将s作为参数递归。
wackyboy 2009-03-23
  • 打赏
  • 举报
回复
递归的话要有出口的
fihuang 2009-03-23
  • 打赏
  • 举报
回复
如果函数返回值类型是void 也可以return吗?
zcdg909 2009-03-21
  • 打赏
  • 举报
回复
设置退出条件,然后break
lude8880 2009-03-20
  • 打赏
  • 举报
回复
return
moonshineidolon 2009-03-20
  • 打赏
  • 举报
回复
不用写
if (s=="")
{
//类似于break之类的,可以终止递归的
}
这个吧

因为这个也不要执行什么内容,

不过你这个怎么跟通常的递归不一样呢,
没有返回值。

看不太明白
wangping_li 2009-03-20
  • 打赏
  • 举报
回复
既然S当参数传递给函数的,如果你的S都为空了,那这个函数执行也没任何意义
等于空直接return不就好了,就一个判断而已,想不通为什么还要找其它方法?
wanabe 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jishengzu 的回复:]
C# code
void Digui(string s)
{
Do(s);
}

void Do(string s)
{
//Do something
s=...; //这里变量处理但s=""时结束当前方法,不过不明白你这样写的意义应为没返回值的,能用来做什么呢
if (s!="")
{
Do(s);
}
[/Quote]
我也不明白
jishengzu 2009-03-20
  • 打赏
  • 举报
回复

void Digui(string s)
{
Do(s);
}

void Do(string s)
{
//Do something
s=...; //这里变量处理但s=""时结束当前方法,不过不明白你这样写的意义应为没返回值的,能用来做什么呢
if (s!="")
{
Do(s);
}

lethwei 2009-03-20
  • 打赏
  • 举报
回复
return 就终止了
xianguang321 2009-03-20
  • 打赏
  • 举报
回复
return

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧