/* primer45.c - eliminacija repne rekurzije polazeci od * programa primer43.c */ #include int mnozenje( int, int ); int par( int x ); main(){ int A = 17, B = 3; int a, b, z; /* Inicijalizacija */ a = A; b = B; z = mnozenje( a, b ); printf("z = %d\n", z ); } int mnozenje( int x, int y ) { /* eliminacija repne rekurzije while-iskazom */ while( (y == 0 ) && par( y ) ) { x = 2 * x; y = y/2; } /* ostatak rekurzivne procedure */ if( y == 0 ) return 0; else return mnozenje( 2*x, y/2 ) + x; } int par( int x ) { return ( x - (x/2)*2 ); }