I'm trying to convert C++ code to nasm ..unsuccessful

Well, here is the c++ code:

int recursion(int n)
    if ((n==0) || (n==1))
       return 1;
    else if (n==2)
         return 7;
        return recursion(n-3)+recursion(n-2);
int main ()
    for (int i=3; i<=15; i++)
        cout << recursion(i)  << endl;
        return 0;

and this is my asm converted code:

bits 32
extern _printf, _scanf
global _main

section .data
	output db "%d",10,0 
section .text

      mov eax, [esp+4]
      cmp eax, 1
      je .isone
      cmp eax, 2
      je .istwo
      cmp eax, 0
      je .iszero

      sub eax, 3       ;(n-3)
      mov edx, eax
      push eax
      call _recursion
      pop ebx
      mov eax, edx
      inc eax          ;(n-2)
      push eax
      call _recursion
      pop eax
      add eax, ebx
      jmp .end
      mov eax, 1
      jmp .end
      mov eax, 7
      jmp .end
      mov eax, 1
      jmp .end

      mov ecx, 3   ;count 3....15
      push ecx
      push ecx
      call _recursion
      add esp, 4

      push eax
      push dword output
      call _printf
      add esp, 8

      pop ecx
      inc ecx

      ;if count<=15
      cmp ecx, 15
      jle .doituntil


I need help..
Thank you!