Guest User

Untitled

a guest
Jul 20th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1.  
  2. function tco(g){
  3. //arguments
  4. g.__first = true;
  5. g.__cont = {};
  6. g.__original = g
  7. g.__tco = function (){
  8. var r;
  9. if(g.__first){
  10. g.__first = false;
  11. for(;;){
  12. var r = g.apply(this,arguments)
  13. if (g.__cont === r){
  14. arguments = g.__args //update arguments
  15. } else {
  16. g.__first = true;
  17. return r;
  18. }
  19. }
  20. } else {
  21. g.__args = arguments;
  22. return g.__cont;
  23. }
  24. }
  25. return g.__tco
  26. }
  27.  
  28. function f(n,sum){
  29. return (n>0)? f(n-1,sum+n) : sum;
  30. }
  31.  
  32.  
  33. function even(n){return n==0 ? true : odd(n-1)}
  34. function odd(n){return n==0 ? false : even(n-1)}
  35.  
  36. f = tco(f)
  37. console.log(f(1000000,0))
  38. even = tco(even)
  39. odd = tco(odd)
  40. console.log(odd(10000000))
Add Comment
Please, Sign In to add comment