boost::uint64_t jacobsthal(boost::uint64_t n) { if (0 == n) return 0; else if (1 == n) return 1; else return jacobsthal(n - 1) + 2 * jacobsthal(n - 2); }
int jacobsthal(int n) { int result = 0; if (n == 0) result = 1; else if (n == 1) result = 1; else { int n_minus_two = jacobsthal(n-2); int n_minus_one = jacobsthal(n-1); result = 2*n_minus_two + n_minus_one; } return result; }
int main(int argc, char *argv[]) { int i, n, k, b, aantal = 1; if (argc==2 || argc==3) { n = atoi(argv[1]); if (argc == 3) aantal = atoi(argv[2]); for (i=0; i<aantal; i++){ b = jacobsthal(n); } printf("Jacobsthal(n = %d) = %d \n", n, b); return 0; } else { printf("Formaat: %s <getal n> [# interaties: default 1]\n", argv[0]); return 1; } }
int main(int argc, char** argv) { try { if (2 != argc) throw std::exception(); const boost::uint64_t n = boost::lexical_cast<boost::uint64_t>(argv[1]); std::cout << ( boost::format("jacobsthal(%1%) == %2%\n") % n % jacobsthal(n)); } catch (std::exception&) { std::cerr << (boost::format("Usage: %1% N\n") % argv[0]); return 1; } }