Rozdział 53 - Zadanie domowe.
Ostatnio zmodyfikowano 2019-03-11 08:54
lukaszse Temat założony przez niniejszego użytkownika |
Rozdział 53 - Zadanie domowe. » 2019-03-10 23:43:04 Chciałem zapytać czy to rozwiązanie jest poprawne, czy istnieje inne rozwiązanie? Wydaje mi się to zbyt trywialne. #include <iostream>
int add( int a, int b ) { if( b == 0 ) return a; return add( a ^ b,( a & b ) << 1 ); }
int substract( int a, int b ) { if( b == 0 ) return a; return add( a ^( ~b + 1 ),( a &( ~b + 1 ) ) << 1 ); }
int main() { int a, b; std::cout << "Podaj dwie liczby:\n"; std::cin >> a >> b; std::cout << a << " - " << b << " = " << substract( a, b ) << '\n'; }
|
|
Rashmistrz |
» 2019-03-11 02:03:15 Co prawda nie czytałem jeszcze zaktualizowanego kursu, ładne rekurencyjne rozwiązanie uzyskałeś, aczkolwiek ja bym spróbował to jeszcze rozwiązać iteracyjnie i znaleźć dodatkowo sposób na parallel'izację by zrobić jak najwięcej części operacji za jednym zamachem.
Wolałbym, żeby ktoś jeszcze się wypowiedział, bo ja sam muszę nieco swoją wiedzę odświeżyć. |
|
pekfos |
» 2019-03-11 08:54:29 Wydaje mi się to zbyt trywialne. |
Bo to zadanie jest trywialne. Rozwiązanie można zapisać krócej int subtract( int a, int b ) { return add( a, add( ~b, 1 ) ); }
|
|
« 1 » |