<problem>
Create a function `fibonacci(n:int)` that takes in a parameter `n`, an integer representing the number of terms in the Fibonacci sequence to generate, and returns:
-  'OOPS', if `n` is less than or equal to 0 
- `1`  if `n` is equal to `1`
- `1` if `n` is equal to `2`
- Otherwise, return the nth term of the Fibonacci sequence. A Fibonacci sequence is a sequence in which every number is the sum of the previous two numbers in the sequence. Example Fibonacci sequence: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ....
## Example Cases:
```
fibonacci(-3) => 'OOPS'
fibonacci(0) => 'OOPS'
fibonacci(1) =>1
fibonacci(2) => 1
fibonacci(5) => 5
fibonacci(10) => 55
```
</problem>
<bug_code>
1. def fibonacci(n):
2.    if n <= 0:
3.        return "OOPS"
4.    elif n == 1 or n == 2:
5.        return 1
6.    else:
7.        return fibonacci(n) + fibonacci(n-1)
</bug_code>
<bug_desc>
`fibonacci(n)` calls `fibonacci(n)` on line 7 with the same argument `n` which leads to infinite recursion and consequently a runtime error is thrown.
</bug_desc>
<bug_fixes>
Replace `fibonacci(n) + fibonacci(n-1)` with `fibonacci(n-1) + fibonacci(n-2)` on line 7.
</bug_fixes>
<unit_tests>
assert fibonacci(0) == 'OOPS'
assert fibonacci(1) == 1
assert fibonacci(2) == 1
assert fibonacci(5) == 5
assert fibonacci(-3) == 'OOPS'
assert fibonacci(10) == 55
</unit_tests>
<stu_desc>

</stu_desc>
<dialogue>
User: Hi! My code returns a runtime error about infinite recursion, whenever I give it an input number greater than 2. Can you help?
Assistant: Can you explain what infinite recursion means?
	<alt>I assume this means you tried it with values 1 and 2 for the input `n` and it worked. Given this, which line in the code do you think is responsible for the runtime error?
	<alt>According to the definition of Fibonacci numbers given in the problem description, how is the number at position `n` computed?
	<alt>According to the problem description, the nth number in the Fibonacci sequence should be equal to the sum of Fibonacci numbers at what positions?
	<alt>Assume that the input `n` is 3. Can you tell me what the code does in this case, by going over it line by line?
	<alt>Given the error is about 'infinite recursion', can you tell me where recursion happens in your code?
	<alt>Can you explain what a recursive function is? When do we call a function recursive?
	<alt>According to the problem description, every Fibonacci number is the sum of the previous two numbers in the sequence. Therefore, what Fibonacci number do you get if you add the numbers at positions `n` and `n - 1`?
User: Infinite recursion means that the function calls itself without ever stopping.
	<alt>I am not sure, can you explain infinite recursion to me?
Assistant: Correct. Where in the code does the function call itself?
	<alt>Good. Given that the problem is caused by the function calling itself forever, where in the code do you think the problem is?
User: It is on line 7.
Assistant: Correct. There are two recursive calls there, can you figure out which of them leads to infinite recursion?
	<alt>Correct. So, when the function is called as `fibonacci(n)`, if it gets to line 7 it calls `fibonacci(n)` again, and if that is completed it then calls `fibonacci(n - 1)`. Do you see why this leads to infinite recursion?
User: Ah, I see. It is the call to `fibonacci(n)`, because `fibonacci(n)`calls `fibonacci(n)`which will again call `fibonacci(n)`, forever.
	<alt>Ah, I see, it is the call to `fibonacci(n)`. I made a mistake, I should have called fibonacci for `n - 1` and `n - 2`. Let me do that ... it works! Thank you!
<code>
1. def fibonacci(n):
2.    if n <= 0:
3.        return "OOPS"
4.    elif n == 1 or n == 2:
5.        return 1
6.    else:
7.        return fibonacci(n - 2) + fibonacci(n - 1)
</code>
Assistant: Good! That means the code on line 7 is not correct. Can you look at the problem description to see how the Fibonacci number at position `n` needs to be computed and fix your code?
	<alt>Good! Can you fix the code in line 7 so that it implements what is in the problem description?
User: Ah, I see now, the previous two numbers are at positions `n - 1` and `n - 2`. Let me fix that... it works now! Thank you!
<code>
1. def fibonacci(n):
2.    if n <= 0:
3.        return "OOPS"
4.    elif n == 1 or n == 2:
5.        return 1
6.    else:
7.        return fibonacci(n - 1) + fibonacci(n - 2)
</code>
Assistant: You are welcome!
</dialogue>