【发布时间】:2016-11-28 16:20:08
【问题描述】:
试图复习一些概念。我试图找到链接列表实现中所有节点中存在的最小值。我认为出于某种原因,我的代码正在返回所有递归返回值,而不仅仅是最后一个。有人可以检查一下我的 findMin 方法中的问题吗?
public class Node
{
public int data;
public Node next;
public Node(int d)
{
data = d;
next = null;
}
}
public static int findMin(Node head,int min=0)
{
if (min == 0)
min = head.data;
if (head.data < min)
{
min = head.data;
}
else
{
findmin(head.next, min);
}
return min;
}
【问题讨论】:
-
请尝试使用调试器。
-
与问题本身没有直接关系,但为什么使用
0作为min的默认值?我认为它应该是int.MaxValue,因为您正试图在列表中找到最小的元素。 -
另外,您所说的“我认为出于某种原因我的代码返回所有递归返回值,而不仅仅是最后一个返回值”并不完全清楚。也许提供一个例子说明
findMin()为给定的数字列表返回什么? -
C#汽车不敏感吗?你在哪里使用
findmin返回的结果(可能的最小值)? -
我认为您使用递归而不是循环用于教育目的是否正确?因为如果不是,你不应该使用递归来解决这个问题。
标签: c# algorithm recursion data-structures