LINUX.ORG.RU

История изменений

Исправление cluge, (текущая версия) :

Фибоначчи, выглядит она так: https://i.postimg.cc/D0W8v7XZ/image.png

Господа, вот даже не соц. опрос, а просто опрос. Ответьте, если можете.

Тикль у нас знают три с половиной землекопа, на Украине его не знает никто. Сейчас посмотрите эту схемку по ссылке и посмотрите код на тикле. Во что вы быстрее сможете вьехать?

Циклом:

proc fib n {
    lassign {0 1} a b
    while {$n > 0} {
        lassign [list $b [expr {$a + $b}]] a b
        incr n -1
    }
    return $a
}

puts [fib [gets stdin]]

Простая рекурсия:

proc fib n {
    expr {$n < 2 ? $n : [fib [expr {$n - 1}]] + [fib [expr {$n - 2}]]}
}

puts [fib [gets stdin]]

Хвостовая рекурсия:

proc fib n {
    proc fibt {a b n} {
        expr {$n <= 0 ? $b : [tailcall fibt [expr {$a + $b}] $a [incr n -1]]}
    }
    fibt 1 0 $n
}

puts [fib [gets stdin]]

ЗЫ: Метапрог, почему у тебя на входе схем всегда константы? З0 версия метапрога, а до сих пор не осилил ввод с консоли?

ЗЫЫ: Метапрог, давай посчитай с помощью метапрога милллионное число Фибоначчи, моя убогая скриптуха посчитала за приемлемое время. Печатать его сюда не буду, потому что оно настолько огромно, что столько атомов в видимой вселенной нет.

Исправление cluge, :

Фибоначчи, выглядит она так: https://i.postimg.cc/D0W8v7XZ/image.png

Господа, вот даже не соц. опрос, а просто опрос. Ответьте, если можете.

Тикль у нас знают три с половиной землекопа, на Украине его не знает никто. Сейчас посмотрите эту схемку по ссылке и посмотрите код на тикле. Во что вы быстрее сможете вьехать?

Циклом:

proc fib n {
    lassign {0 1} a b
    while {$n > 0} {
        lassign [list $b [expr {$a + $b}]] a b
        incr n -1
    }
    return $a
}

puts [fib [gets stdin]]

Простая рекурсия:

proc fib n {
    expr {$n < 2 ? $n : [fib [expr {$n - 1}]] + [fib [expr {$n - 2}]]}
}

puts [fib [gets stdin]]

Хвостовая рекурсия:

proc fib n {
    proc fibt {a b n} {
        expr {$n <= 0 ? $b : [tailcall fibt [expr {$a + $b}] $a [incr n -1]]}
    }
    fibt 1 0 $n
}

puts [fib [gets stdin]]

ЗЫ: Метапрог, почему у тебя на входе схем всегда константы? З0 версия метапрога, а до сих пор не осилил ввод с консоли?

ЗЫЫ: Метапрог, давай посчитай с помощью метапрога милллионное число Фибоначчи, моя убогая скриптуха посчитала за приемлемое время.

Исходная версия cluge, :

Фибоначчи, выглядит она так: https://i.postimg.cc/D0W8v7XZ/image.png

Господа, вот даже не соц. опрос, а просто опрос. Ответьте, если можете.

Тикль у нас знают три с половиной землекопа, на Украине его не знает никто. Сейчас посмотрите эту схемку по ссылке и посмотрите код на тикле. Во что вы быстрее сможете вьехать?

Циклом:

proc fib n {
    lassign {0 1} a b
    while {$n > 0} {
        lassign [list $b [expr {$a + $b}]] a b
        incr n -1
    }
    return $a
}

puts [fib [gets stdin]]

Простая рекурсия:

proc fib n {
    expr {$n < 2 ? $n : [fib [expr {$n - 1}]] + [fib [expr {$n - 2}]]}
}

puts [fib [gets stdin]]

Хвостовая рекурсия:

proc fib n {
    proc fibt {a b n} {
        expr {$n <= 0 ? $b : [tailcall fibt [expr {$a + $b}] $a [incr n -1]]}
    }
    fibt 1 0 $n
}

puts [fib [gets stdin]]

ЗЫ: Метапрог, почему у тебя на входе схем всегда константы? З0 версия метапрога, а до сих пор не осилил ввод с консоли?