什么是直接递归?什么是无限递归?
什么是基本案例,为什么有必要/重要?
示例代码:
public static void indifferent(int x, int y) {
if (x <= y) {// base case
System.out.print("!");
}else {
System.out.print(x);
indifferent(x - 1, y + 2);
System.out.print(y);
}
}
答案 0 :(得分:2)
直接递归:方法调用自身。
间接递归:方法调用其他一些方法,在多次调用之后,调用返回到再次调用第一个调用方法的情况。
基本情况:它是任何递归函数的重要组成部分。递归方法的一个条件是停止调用自身,从而结束递归,即在递归中停止更深入。基本上,如果你认为递归是一个yoyo,那么当递归处于极端时它就是基本情况。
无限递归:这是一个永不结束的递归。基本上它是一个递归函数,没有基本情况。 (溜溜球不会回来,到处都是。)
在此link
查看这些有趣的递归图像答案 1 :(得分:2)
a()
调用方法b()
,方法a()
本身(直接或间接)再次调用方法@RequestMapping(value = "/{id}/definitions", method = RequestMethod.PUT)
public void update(@PathVariable(value = "id") String id,
HttpServletRequest iRequest) throws Exception {
String decryptedId = //decrypt here
//Do whatever else
//either forward: or redirect:
return "forward:my-service-2/" + decryptedId + "/definitions";
}
。答案 2 :(得分:1)
这是一个爬楼梯的算法
public class Project
{
public Project {
Members = new HashSet<ProjectMember>();
}
public Guid Id { get; set; }
public string Name { get; set; }
public virtual ICollection<ProjectMember> Members { get; set; }
}
public class ProjectMember
{
public Guid ProjectId { get; set; }
public virtual Project Project { get; set; }
public Guid CityId { get; set; }
public virtual City City { get; set; }
}
这表明你直接递归(爬升是一步爬升)和基本情况(如果你在顶部则停止)。
两种无限递归的情况:
climb:
if you are at the top
stop
otherwise
step up and then climb
第一个没有基本情况,第二个永远不会达到基本情况:
最后,间接递归:
climb:
step up and then climb
climb:
if you are at the top
stop
otherwise
step up and then step down and then climb