Standard ML Höherstufige Prozeduren

Schreiben Sie eine Prozedur, die n-mal abwechselnd 3 und 7 zu einem anfänglich gegebenen Startwert s beginnend
mit 3 addiert. Verwenden Sie dazu die Hilfsprozedur i ter.

Bräuchte Hilfe beim Schreiben dieser Prozedur…vll weiß es ja jmd :stuck_out_tongue:

ich hab bisher:
fun iter (n:int)(s:int)(f:int->int):int = if n < 1 then s else iter (n-1)(f)(s)
weil man ja iter zuerst deklarieren muss…

und dann fun f (n:int)(s:int)(f:int->int) = iter n s (fn:frowning:n:int)? => dann weiß ich nicht mehr…eventuell etwas mit if n mod 2 = 0 then n+3 else n+7?

Напишите процедуру, что начальное значение N раз попеременно 3 и 7, чтобы изначально дано начиная с добавлено 3. Чтобы сделать это, используйте вспомогательные процедуры я тер.
Нужна была помощь документ … ил этой процедуры он знает JMD: P
У меня до сих пор: весело ИТЭР (N: INT) (S: INT) (F: RC-> INT): ВНУТРИ, если N = <1, то с другой ИТЭР (N-1) (F) (с) потому что нужно сначала объявить ИТЭР …
а затем весело F (N: INT) (S: INT) (F: RC-> INT) ИТЭР = NS (Fn (N: INT) => Я не знаю … может быть, если что-то с N по модулю 2 = 0, то еще N N +3 +7?

\<b\>:smile:\</b\>

ehm? xD

Hallo,

sind iter und die Signatur der Funktion f vorgegeben? iter macht doch eigentlich gar nichts außer nach einigen sinnlosen Rekursionen s zurückzugeben und bei f erschließt sich mir nicht so richtig, warum man da noch eine Funktion als Parameter brauchen sollte. Warum man überhaupt noch eine Hilfsfunktion brauchen sollte… In der Aufgabe steht nicht zufällig auch, was diese machen soll? Oder kann die vielleicht einfach Kekse backen?
Ansonsten ist die Idee mit dem Modulo ja nicht schlecht.
Also wenn n=0 ist, dann müssen wir ja nur s zurückgeben. Das ist die Abbruchbedingung der Rekursion. Wenn n 1 ist, müssen wir 3 zum Ergebnis des nächsten Rekursionsschritts addieren. Wenn n 2 ist, dann 7 usw.
Also so ungefähr:

= wenn n = 0 dann s
 sonst wenn n%2 = 1 dann f(n-1, s)+3
 sonst f(n-1, s)+7

Der Aufruf f(5, 2) würde dann das folgende Ergebnis liefern:

f(5, 2) = f(4, 2) + 3
 = f(3, 2) + 7 + 3
 = f(2, 2) + 3 + 7 + 3
 = f(1, 2) + 7 + 3 + 7 + 3
 = f(0, 2) + 3 + 7 + 3 + 7 + 3
 = 2 + 3 + 7 + 3 + 7 + 3

Nico

also wir haben eben iter neu eingeführt…und in unserem Skript steht, dass man iter vorher immer so deklarieren muss…und dann iter in einer anderen prozedur als hilfsprozedur verwenden soll…unnötig kompliziert :frowning:

Sorry, ich bin Turniertänzer Standard, habe von Programmieren wenig Ahnung!

LG, Stefan

Sorry, ich bin Turniertänzer Standard, habe von Programmieren
wenig Ahnung!

Um Dieter Nuhr (halb) zu zitieren:

„Wenn man keine Ahnung hat,…“

Um Dieter Nuhr (halb) zu zitieren:
„Wenn man keine Ahnung hat,…“

Immer noch nix vom Refit mitgekriegt?

Um Dieter Nuhr (halb) zu zitieren:
„Wenn man keine Ahnung hat,…“

Immer noch nix vom Refit mitgekriegt?

Ich schon, aber der über mir anscheinend nicht.

Oder ist mit „Refit“ etwas ganz anderes als das automatische Anschreiben angeblicher Experten gemeint?