I am trying to solve a problem where I need to return the index value of given number in Fibonacci series. I wrote same code in Java and Python, but both are returning different values. Why?
Java code:
import java.util.HashMap;
public class Fibonacci
{
static int fib (int n, HashMap<Integer, Integer> memo)
{
for(int i: memo.keySet())
if(i==n)
return memo.get(i);
if(n <= 2 ) return 1;
memo.put(n, fib(n-1, memo) + fib(n-2, memo));
return memo.get(n);
}
public static void main(String[] args)
{
System.out.println(fib(50, new HashMap<>()));
}
}
input: 50
output: -298632863
Python code:
def fib(n, memo):
if(n in memo):
return memo[n]
if(n <= 2 ):
return 1
memo[n] = fib(n-1, memo) + fib(n-2, memo)
return memo[n];
print( fib( 50, { } )
input: 50
output: 12586269025