Dwa argumenty dodanie, całkowite rekurencyjnie.

0

Napisz rekurencyjną funkcję, która dostaje jako argumenty dwie nieujemne liczby całkowite i zwraca wynik określony w następujący sposób:

f(x, 0) = x
f(0, x) = x
f(x, y) = f(x−1, y) + f(x, y−1) dla x, y > 0

Czy dobrze napisany jest ten kod ?

 #include <stdio.h>
int wynik(int x, int y)
{
    if (y == 0)
        return x;
    if (x == 0)
        return x;
    else
        return wynik(x - 1, y) + wynik(x, y - 1);
}
int main()
{
    int x, y;
    scanf("%d", &x);
    scanf("%d", &y);
    printf("%d", wynik(x, y));
    return 0;
}

dodanie znacznika <code class="c"> - @furious programming

0

Prawie idealnie. W warunku dla x == 0 zwróciłbym y.

0

Na pewno ? To f(0, x) = x mowi żeby zwrócić x.

`dodanie znacznika ``` - @furious programming

0

Nie jest dobrze:

#include <stdio.h>

unsigned f(unsigned x,unsigned y)
  {
   return y&&x?f(x-1U,y)+f(x,y-1U):y+x;
  }
  
int main()
  {
   unsigned x,y;
   while(scanf("%u%u",&x,&y)==2) printf("f(%u,%u)=%u\n",x,y,f(x,y));
   return 0;
  }

Zapomniałeś o:

f(x, 0) = x // masz 0 zamiast x
f(0, x) = x
f(x, y) = f(x−1, y) + f(x, y−1) dla x, y > 0 // masz dla każdego x, y

1 użytkowników online, w tym zalogowanych: 0, gości: 1