gpt4 book ai didi

erlang - 尝试在 Erlang 中编译时出现语法错误,嵌套 if 语句

转载 作者:行者123 更新时间:2023-12-04 08:33:57 33 4
gpt4 key购买 nike

我目前正在处理这个类作业,即在 Erlang 中创建一个 btree 并创建一个能够删除其上的 Element 的函数。从我的角度来看,我无法理解 Erlang 在尝试编译我的代码时返回的错误。btree.erl:211: syntax error before: 'end'据我所知,哪个不是真的,但我一定是错的?我怀疑它位于嵌套的 if 子句中,但我尝试根据此处对嵌套的 if 语句进行编码 Nested If Clause .
我怀疑这可能只是一个小问题,我现在压力太大/盲目而无法看到。任何帮助,将不胜感激。

deleteBT(BTree = {ElementAtom,Height,Links,Rechts}, Element) ->
if

Element > ElementAtom ->
NeuRechts = deleteBT(Rechts, Element),
Hanoi = findHeight(NeuRechts, Links),
{ElementAtom,Hanoi,Links,NeuRechts};

Element < ElementAtom ->
NeuLinks = deleteBT(Links, Element),
Hanoi = findHeight(NeuLinks, Rechts),
{ElementAtom,Hanoi,NeuLinks,Rechts};

Element == ElementAtom ->
if
BTree == {ElementAtom, Height, Links,{}} -> Links;

BTree == {ElementAtom, Height, {},Rechts} -> Rechts;

BTree == {ElementAtom, Height, {},{}} -> {};

BTree == {ElementAtom, Height, Links,Rechts} ->
Kleinster = kLZahl(Rechts), %Findet uns die Kleinste Zahl vom übergebenen Baum
RechtsNeu = deleteBT(Rechts, Kleinster),
Hanoi = findHeight(RechtsNeu, Links),
{Kleinster, Hanoi, Links, RechtsNeu};
true -> -1
end;
true -> -1;
end.

最佳答案

我在你的评论中看到你已经解决了这个问题。
尽管如此,我想借此机会向您推荐一种使用模式匹配和 fewer ifs 稍微改进代码的简单方法。 :

delete_bt({ElementAtom, _, Links, Rechts}, Element) when Element > ElementAtom ->
NeuRechts = delete_bt(Rechts, Element),
Hanoi = find_height(NeuRechts, Links),
{ElementAtom, Hanoi, Links, NeuRechts};
delete_bt({ElementAtom, _, Links, Rechts}, Element) when Element < ElementAtom ->
NeuLinks = delete_bt(Links, Element),
Hanoi = find_height(NeuLinks, Rechts),
{ElementAtom, Hanoi, NeuLinks, Rechts};
delete_bt({ElementAtom, _, Links, {}}, ElementAtom) ->
Links;
delete_bt({ElementAtom, _, {}, Rechts}, ElementAtom) ->
Rechts;
delete_bt({ElementAtom, Height, Height, Links, Rechts}, ElementAtom) ->
Kleinster = kLZahl(Rechts), %Findet uns die Kleinste Zahl vom übergebenen Baum
RechtsNeu = delete_bt(Rechts, Kleinster),
Hanoi = find_height(RechtsNeu, Links),
{Kleinster, Hanoi, Links, RechtsNeu};
delete_bt(_, _) ->
-1.

关于erlang - 尝试在 Erlang 中编译时出现语法错误,嵌套 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64896405/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com