【发布时间】:2016-04-03 19:24:04
【问题描述】:
我的代码正在寻找最大回文数,别名 N = reverse(N)。代码还没有完成。但是请帮助我找出异常的原因。
find_palindrome(List1, List2, Increment, IfPalindrome) ->
List_of_values = [X * Y || X <- List1, Y <- List2],
find_palindrome(0, 1, List_of_values, Increment, IfPalindrome).
find_palindrome(Max, N, List_of_values, Increment, IfPalindrome) ->
case IfPalindrome(lists:nth(N, List_of_values)) of
true ->
case Max < lists:nth(N, List_of_values) of
true ->
Max = lists:nth(N, List_of_values),
find_palindrome(Max, Increment(N), List_of_values, Increment, IfPalindrome);
false ->
find_palindrome(Max, Increment(N), List_of_values, Increment, IfPalindrome)
end;
false ->
find_palindrome(Max, Increment(N), List_of_values, Increment, IfPalindrome)
end.
check_palindrome(N) ->
(N) == (list_to_integer(lists:reverse(integer_to_list(N)))).
problem4() ->
find_palindrome(lists:seq(100, 999), lists:seq(100, 999), fun(X) -> X = X + 1 end, fun check_palindrome/1).
我经常遇到异常:
** exception error: no match of right hand side value 2
in function euler4:'-problem4/0-fun-0-'/1 (euler4.erl, line 36)
in call from euler4:find_palindrome/5 (euler4.erl, line 28)
【问题讨论】:
-
这也是 stackoverflow.com/q/6438041/409228 的副本。在问你的问题之前,你有没有费心搜索 SO?这个问题已经在这里回答过无数次了。
-
在您知道它与其他关于变量不变性的问题重复之前,您首先需要知道这是关于变量不变性的,更重要的是,要知道存在这样的事情。这是第一个链接的副本,但我看不出它是如何与第二个链接重复的。而且您需要知道问题的答案,然后才能看到它是重复的。做个好人。
-
这个问题是关于一段特定的代码不起作用。解决方案与另一个问题相似的事实并不会使其重复。许多问题可以通过相同或相似的答案来回答,但重要的是特定答案回答特定问题的原因,而不是答案本身。
标签: erlang