Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
9
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-1.tcl
Normal file
9
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-1.tcl
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
proc fibiter n {
|
||||
if {$n < 2} {return $n}
|
||||
set prev 1
|
||||
set fib 1
|
||||
for {set i 2} {$i < $n} {incr i} {
|
||||
lassign [list $fib [incr fib $prev]] prev fib
|
||||
}
|
||||
return $fib
|
||||
}
|
||||
3
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-2.tcl
Normal file
3
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-2.tcl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
proc fib {n} {
|
||||
if {$n < 2} then {expr {$n}} else {expr {[fib [expr {$n-1}]]+[fib [expr {$n-2}]]} }
|
||||
}
|
||||
11
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-3.tcl
Normal file
11
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-3.tcl
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
proc tcl::mathfunc::fib {n} {
|
||||
if { $n < 2 } {
|
||||
return $n
|
||||
} else {
|
||||
return [expr {fib($n-1) + fib($n-2)}]
|
||||
}
|
||||
}
|
||||
|
||||
# or, more tersely
|
||||
|
||||
proc tcl::mathfunc::fib {n} {expr {$n<2 ? $n : fib($n-1) + fib($n-2)}}
|
||||
4
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-4.tcl
Normal file
4
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-4.tcl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
expr {fib(7)} ;# ==> 13
|
||||
|
||||
namespace path tcl::mathfunc #; or, interp alias {} fib {} tcl::mathfunc::fib
|
||||
fib 7 ;# ==> 13
|
||||
12
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-5.tcl
Normal file
12
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-5.tcl
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
proc fib-tailrec {n} {
|
||||
proc fib:inner {a b n} {
|
||||
if {$n < 1} {
|
||||
return $a
|
||||
} elseif {$n == 1} {
|
||||
return $b
|
||||
} else {
|
||||
tailcall fib:inner $b [expr {$a + $b}] [expr {$n - 1}]
|
||||
}
|
||||
}
|
||||
return [fib:inner 0 1 $n]
|
||||
}
|
||||
17
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-6.tcl
Normal file
17
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-6.tcl
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
proc fibiter n {
|
||||
if {$n < 0} {
|
||||
set n [expr {abs($n)}]
|
||||
set sign [expr {-1**($n+1)}]
|
||||
} else {
|
||||
set sign 1
|
||||
}
|
||||
if {$n < 2} {return $n}
|
||||
set prev 1
|
||||
set fib 1
|
||||
for {set i 2} {$i < $n} {incr i} {
|
||||
lassign [list $fib [incr fib $prev]] prev fib
|
||||
}
|
||||
return [expr {$sign * $fib}]
|
||||
}
|
||||
fibiter -5 ;# ==> 5
|
||||
fibiter -6 ;# ==> -8
|
||||
3
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-7.tcl
Normal file
3
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-7.tcl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
proc tcl::mathfunc::fib {n} {expr {$n<-1 ? -1**($n+1) * fib(abs($n)) : $n<2 ? $n : fib($n-1) + fib($n-2)}}
|
||||
expr {fib(-5)} ;# ==> 5
|
||||
expr {fib(-6)} ;# ==> -8
|
||||
1
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-8.tcl
Normal file
1
Task/Fibonacci-sequence/Tcl/fibonacci-sequence-8.tcl
Normal file
|
|
@ -0,0 +1 @@
|
|||
proc fib n {expr {round((.5 + .5*sqrt(5)) ** $n / sqrt(5))}}
|
||||
Loading…
Add table
Add a link
Reference in a new issue