Advertisement
Guest User

Untitled

a guest
Mar 12th, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.96 KB | None | 0 0
  1. (*
  2.  
  3. sf3
  4. {
  5.   n      | 0
  6.   result | peger på xs som er [1;2]
  7. }
  8.  
  9.  
  10. sf2
  11. {
  12.   n      | 1
  13.   result | peger på ys som er 1::xs
  14.          | [1;1;2]
  15.          | bagefter sker der en List.rev
  16.          | endelige resultat er [2;1;1]
  17. }
  18.  
  19. sf1
  20. {
  21.   n      | 2
  22.   result | peger på ys som er 2::ys
  23.          | [2;2;1;1]
  24.          | bagefter sker der en List.rev
  25.          | endelige resultat er [1;1;2;2]
  26. }
  27.  
  28.  
  29. sf0
  30. {
  31.   xs     | [1;2]
  32.   g      | "closure of g"
  33.   it     | [1;1;2;2]
  34. }
  35.  
  36. Vi starter med sf0, og så for hvert rekursivt kald af g bliver der
  37. pushet en ny stackframe ovenpå sf0. så vi har [sf0,sf1,sf2,sf3]. Når den rammer n=0 så regner den
  38. resultatet som er xs og så popper den det øverste stackframe "sf3". Ved sf2 får vi et "|1| |--->"
  39. som peger på xs. Den bliver så reverset. ved sf1 har vi den nye liste ys [2;1;1] hvorpå vi smider
  40. "|2| |--->" nu kan vi så poppe sf2, og resultatet af sf0 bliver listen reverset, så vi popper sf1.
  41.  
  42.  
  43.  
  44. *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement