Anonymous recursion: Difference between revisions
Content added Content deleted
m (→{{header|Objective-C}}: modernize) |
|||
Line 1,142: | Line 1,142: | ||
result = 1; |
result = 1; |
||
else |
else |
||
result = [[self performSelector:_cmd withObject: |
result = [[self performSelector:_cmd withObject:@(i-1)] intValue] |
||
+ [[self performSelector:_cmd withObject: |
+ [[self performSelector:_cmd withObject:@(i-2)] intValue]; |
||
return |
return @(result); |
||
} |
} |
||
@end |
@end |
||
int main (int argc, const char *argv[]) { |
int main (int argc, const char *argv[]) { |
||
@autoreleasepool { |
|||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
|||
AnonymousRecursion *dummy = [[AnonymousRecursion alloc] init]; |
AnonymousRecursion *dummy = [[AnonymousRecursion alloc] init]; |
||
NSLog(@"%@", [dummy fibonacci: |
NSLog(@"%@", [dummy fibonacci:@8]); |
||
[dummy release]; |
|||
} |
|||
[pool release]; |
|||
return 0; |
return 0; |
||
}</lang> |
}</lang> |
||
Line 1,168: | Line 1,167: | ||
reason:@"fib: no negative numbers" |
reason:@"fib: no negative numbers" |
||
userInfo:nil]; |
userInfo:nil]; |
||
int (^f)(int); |
|||
__block __weak int (^weak_f)(int); |
|||
weak_f = f = ^(int n) { |
|||
if (n < 2) |
if (n < 2) |
||
return 1; |
return 1; |
||
else |
else |
||
return |
return weak_f(n-1) + weak_f(n-2); |
||
}; |
}; |
||
return f(n); |
return f(n); |
||
Line 1,179: | Line 1,179: | ||
int main (int argc, const char *argv[]) { |
int main (int argc, const char *argv[]) { |
||
@autoreleasepool { |
|||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
|||
NSLog(@"%d", fib(8)); |
NSLog(@"%d", fib(8)); |
||
} |
|||
[pool release]; |
|||
return 0; |
return 0; |
||
}</lang> |
}</lang> |