Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dlaczego program ciągle zwraca liczby mimo braku pętli

Ostatnio zmodyfikowano 2017-01-03 19:08
Autor Wiadomość
dakruzz
Temat założony przez niniejszego użytkownika
Dlaczego program ciągle zwraca liczby mimo braku pętli
» 2017-01-03 18:32:49
C/C++
#include <stdio.h>
#include <stdlib.h>

int fr( int n, int m )
{
    int a, b, s;
    s = n + m;
    printf( "s= %d, ", s );
    if( n == 0 ) return m;
    else if( m == 0 ) return n;
    else
    {
        a = fr( n - 1, m );
        b = fr( n, m - 1 );
        s += a + b;
        return s;
    }
   
}

int main()
{
    int w;
    w = fr( 1, 3 );
    printf( " \n fr(1,3)= %d\n", w );
    return 0;
}

Dlaczego program nie przestaje na policzeniu pierwszego s=4?

Wynik programu:
s= 4, s= 3, s= 3, s= 2, s= 2, s= 1, s= 1,
 fr(1,3)= 16
P-155898
pekfos
» 2017-01-03 18:44:40
Funkcja wywołuje samą siebie. Nie trzeba pętli, by powtarzać kod.
P-155899
dakruzz
Temat założony przez niniejszego użytkownika
» 2017-01-03 19:02:24
Chyba zaczynam rozumieć :) Dzięki
Przepraszam że zawracam głowe, ale nie rozumiem jeszcze jednej rzeczy:

Czemu
C/C++
int b = 3
float d = 1.5 *( 10 / b ) - b % 2;
zwraca liczbe 3.5, a nie  4.0 ??? czy ja liczyć nie umiem, czy to coś z floutem
P-155902
pekfos
» 2017-01-03 19:08:23
Zapewne to pierwsze. 1.5 * 3 - 1 = 3.5. Poza tym to bez związku z tematem.
P-155905
« 1 »
  Strona 1 z 1