jahcy 2010-02-04 00:54
浏览 166
已采纳

一个算法问题,关于尾递归的。

一般情况下,在java中遍历所有文件如下:
[code="java"]
public static void printFileName(File file) {
if(file != null) {
if(file.isFile()) {
System.out.println(file.getName());
}
else {
File[] files = file.listFiles();
for (File f : files) {
printFileName(f);
}
}
}
}
[/code]

我想知道,这个深度遍历就近算不算是尾递归?如果是尾递归如何消除?

谢谢!

  • 写回答

1条回答 默认 最新

  • fkuebukn 2010-02-04 01:20
    关注

    这不是尾递归。
    你的递归调用在循环体内,也就是说,在递归调用之后仍然需要用到当然函数执行的状态,所以不是尾递归。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥50 关于#php#的问题,请各位专家解答!
  • ¥15 python 3.8.0版本,安装官方库ibm_db遇到问题,提示找不到ibm_db模块。如何解决?
  • ¥15 TMUXHS4412如何防止静电,
  • ¥30 Metashape软件中如何将建模后的图像中的植被与庄稼点云删除
  • ¥20 机械振动学课后习题求解答
  • ¥15 IEC61850 客户端和服务端的通讯机制
  • ¥15 MAX98357a(关键词-播放音频)
  • ¥15 Linux误删文件,请求帮助
  • ¥15 IBMP550小型机使用串口登录操作系统
  • ¥15 关于#python#的问题:现已知七自由度机器人的DH参数,利用DH参数求解机器人的逆运动学解目前使用的PSO算法