Dlaczego program ciągle zwraca liczby mimo braku pętli
Ostatnio zmodyfikowano 2017-01-03 19:08
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 #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 |
|
pekfos |
» 2017-01-03 18:44:40 Funkcja wywołuje samą siebie. Nie trzeba pętli, by powtarzać kod. |
|
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 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 |
|
pekfos |
» 2017-01-03 19:08:23 Zapewne to pierwsze. 1.5 * 3 - 1 = 3.5. Poza tym to bez związku z tematem. |
|
« 1 » |