设置一个全局变量Y:Boolean.
function MyFun(sStr:String):String;
var ss: String;
ii: Integer;
begin
if Y then exit;
........................
while ii < 100 do
begin
MyFun(ss);
end;
........................
end;然后当你要中断递归的时候就把Y设置为True就好了。
function MyFun(sStr:String):String;
var ss: String;
ii: Integer;
begin
if Y then exit;
........................
while ii < 100 do
begin
MyFun(ss);
end;
........................
end;然后当你要中断递归的时候就把Y设置为True就好了。
解决方案 »
- 【C转delphi】请帮忙转一个代码片段
- 这条语句在PL/SQL里可以执行为什么我放在TQUERY里就不能执行了
- 类的封装
- 有谁能做一个象MSSQL 中创建视图那样的拖拽后建立对应关系并画线的控件,或第三方控件也行,先给50分,解决后再给100‘
- ImageList1为什么不能存大张图片,如果可以存大张的图,还有如果Image能连接ImageList,就方便多了
- 如何做到程序自动给WebBrowser控件中的网页具有焦点的文本框填上文字?
- 报表的总页数如何显示?报表上的字段如果很长,怎样让它自动换行显示!
- ADO连接access数据库更新备注类型的字段,再post的时候报错
- 有谁知道如何实现--当按下enter键,可以完成按下tab键的功能?
- 小弟请问各位大虾,如果通过程序检查网上邻居的共享是否有密码,如果有如何连接?
- 在对象构建时重载有没有问题
- 如何用datetimepicker控件获取系统时间?
function MyFun(sStr:String):String;
var ss: String;
ii: Integer;
begin
if Y then exit;
........................
while ii < 100 do
begin
if ss > IntToStr(ss) then
中断;
MyFun(ss);
end;
........................
end;
Y: Boolean;function MyFun(sStr:String):String;
var ss: String;
ii: Integer;
begin
if Y then exit;
........................
while ii < 100 do
begin
if ss > IntToStr(ss) then begin
Y := True;
Exit;
end;
MyFun(ss);
end;
........................
end;
var ss: String;
ii: Integer;
begin
if Y then exit;
........................
while ii < 100 do
begin
if ss > IntToStr(ss) then
中断;
MyFun(ss);
if Y then exit; // :)
end;
........................
end;
你参考一下吧。
function myfunc(k:integer):integer;
begin
if k = 1 then result := 1
else result := k + myfunc(k-1)
end;
var ss: String;
ii: Integer;
begin
if Y then exit;
........................
while ii < 100 do
begin
if ss > IntToStr(ss) then
中断;
MyFun(ss);
if Y then exit; // :)
end;
........................
end;
var ss: String;
ii: Integer;
begin
........................
while ii < 100 do
begin
if ss > IntToStr(ss) then
exit;// 中断;
MyFun(ss);
end;
........................
end;
function GetFactorial(N: Integer): Integer;
begin
if N <= 1 then Result := 1
else Result := N * GetFactorial(N-1);
end;
是这样吗?function MyFun(sStr:String):String;
var ss: String;
ii: Integer;
begin
........................
ss := sStr;
while ii < 100 do
begin
if ii > IntToStr(ss) then
begin
result := ss;// 中断;
exit;
end;
ss := MyFun(ss);
end;
result := ss;
........................
end;
//已经成功
function FindFile(sExt: String; sPath:String='C:'):String;
var
fpath: String;
fs: TSearchRec;
Status: Integer;
begin
fpath:=sPath+'\*.*';
Status := FindFirst(fpath,faAnyFile,fs);
if Status = 0 then
begin
if (fs.Name<>'.')and(fs.Name<>'..') then
if (fs.Attr and faDirectory)=faDirectory then
Result := FindFile(sExt,sPath+'\'+fs.Name)
else
begin
if UpperCase(ExtractFileExt(fs.Name)) = UpperCase(sExt) then
begin
Result := sPath+'\'+fs.Name;
FindClose(fs);
Exit;
end;
end;
while FindNext(fs)=0 do
begin
if (fs.Name<>'.')and(fs.Name<>'..') then
if (fs.Attr and faDirectory)=faDirectory then
begin
Result := FindFile(sExt,spath+'\'+fs.Name);
end
else
begin
if UpperCase(ExtractFileExt(fs.Name)) = UpperCase(sExt) then
begin
Result := sPath+'\'+fs.Name;
FindClose(fs);
Exit;
end;
end;
end;
end;
FindClose(fs);
end;
function GetFactorial(N: Integer): Integer;
begin
Result := N * GetFactorial(N-1);
end;//这样不正确,当N<=0,永远不执行if N=1分支,将无限循环
function GetFactorial(N: Integer): Integer;
begin
if N = 1 then Result := 1
else Result := N * GetFactorial(N-1);
end;//这样才正确
function GetFactorial(N: Integer): Integer;
begin
if N <= 1 then Result := 1
else Result := N * GetFactorial(N-1);
end;