Just where has this language gone wrong?
Simen Kjaeraas
simen.kjaras at gmail.com
Tue Jul 24 11:07:53 PDT 2012
On Tue, 24 Jul 2012 19:02:07 +0200, Russel Winder <russel at winder.org.uk>
wrote:
> On Tue, 2012-07-24 at 16:59 +0200, Simen Kjaeraas wrote:
> […]
>> ...which inspired me to write this implementation of fibonacci:
>>
>> T fib(T = int)(int n, T a = 0, T b = 1) {
>> while ( n-- ) {
>> TypeTuple!(a,b) = tuple(b, a +b);
>> }
>> return a;
>> }
>
> Or possibly better:
>
> long fibonacci ( immutable long n ) {
> return array ( takeExactly ( recurrence ! ( "a[n-1] + a[n-2]" ) ( 0L ,
> 1L ) , cast ( size_t ) ( n + 1 ) ) ) [ n ] ;
> }
>
> ?
I had to fix things a bit (I have reasons to want the template parameter
there):
T fib(T = int)(int n, T a = to!T(0), T b = to!T(1)) {
while ( n-- ) {
TypeTuple!(a,b) = tuple(b, a +b);
}
return a;
}
Now, try asking each of these for fib!BigInt(1_000_000). :p
--
Simen
More information about the Digitalmars-d
mailing list