【发布时间】:2015-09-29 22:20:38
【问题描述】:
我正在研究尾递归,但我不确定我的定义是否正确。
我看到这个帖子的最佳答案(link) 并且想知道方法 sum(int x, int num) 在以下示例中是否被视为尾递归:
public class tailrecusiontest {
private static int total;
private static int add(int num)
{
total+=num;
return total;
}
public static int sum(int x, int num) //THIS METHOD TAIL-RECURSIVE?
{
if(num == 0)
{
return x;
}
return sum(add(num), num-1);
}
public static void main(String[] args) {
System.out.print("" + sum(0,4));
}
}
即:是什么阻止我创建一个对象并调用一个方法(在我的示例中为 add(int num)),该方法将处理数据、返回输出以及 根据定义,将其称为方法tail-recursive?
我问这个问题是因为一个作业问我是否可以使一个方法“尾递归”,并想知道尾递归的定义延伸到多远。
这意味着我可以创建任何方法并传入值,然后将其称为尾递归
【问题讨论】:
-
我认为你没有抓住重点;一个函数是否是尾递归并不取决于参数是什么,或者参数中的任何东西可能会做什么。
-
如果有的话,您可以像对待
n - 1一样对待add(num)以确定sum是否是尾递归的 -
您链接的帖子中的第二个答案可能更有用。试试它的建议。
标签: java definition tail-recursion