<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: 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`?
	<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>Can you explain what infinite recursion means?
User: We get the Fibonacci number for `n + 1`. Ah, I see what the problem is, I used the wrong inputs in the recursive calls. Let me fix that... it works, it passes all the tests 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 - 2) + fibonacci(n - 1)
</code>
	<alt>We get the Fibonacci number for `n + 1`.
Assistant: You're welcome!
</dialogue>