Skip to content

Recursive fibonnaci never resolves for high numbers. #7

Closed
@ryanpcmcquen

Description

@ryanpcmcquen

For numbers around 60 or higher, the recursive Fibonacci never returns. Or it just takes longer than I have patience for.

Example:

https://repl.it/@ryanpcmcquen/WoefulQuarrelsomePublishers-1

pub fn fibonacci_recursive(n: i32) -> u64 {
	if n < 0 {
		panic!("{} is negative!", n);
	}
	match n {
		0     => panic!("zero is not a right argument to fibonacci_recursive()!"),
		1 | 2 => 1,
		3     => 2,
		/*
		50    => 12586269025,
		*/
		_     => fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
	}
}

/**
 * Non recursive function.
 */
pub fn fibonacci(n: i32) -> u64 {
	if n < 0 {
		panic!("{} is negative!", n);
	} else if n == 0 {
		panic!("zero is not a right argument to fibonacci()!");
	} else if n == 1 {
		return 1;
	}

	let mut sum = 0;
	let mut last = 0;
	let mut curr = 1;
	for _i in 1..n {
		sum = last + curr;
		last = curr;
		curr = sum;
	}
	sum
}

fn main() {
    println!("{}", fibonacci(60));
    println!("{}", fibonacci_recursive(60));
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions