#include <iostream>
int H(int n, int x) // recursive version
{
if (n <= 0)
return -1;
else if (n == 1)
return 1;
else if (n == 2)
return 2 * x;
else
return 2 * x * H(n-1, x) - 2 * n * H(n - 2, x); // shift n+1, n n-1 to n, n-1 n-2
}
int Hi(int n, int x) //iterative version
{
if (n <= 0)
return -1;
else if (n == 1)
return 1;
int am2 = 1; // start for for n-2
int am1 = 2*x; // start for n-1
if (n == 2)
return am1;
int am;
for (int i=3; i<=n; i++) {
am = 2*x*am1 - 2*i*am2;
//prepare next interation
am2=am1;
am1=am;
}
return am;
}
int main()
{
int n, x;
//std::cout << "Enter the number n: ";
//std::cin >> n;
//std::cout << "Enter the number x: ";
//std::cin >> x;
for (x=5, n=1; n<6; n++) {
std::cout << n<<" "<<x<<" Rec = " << H(n, x) << " Iter = " << Hi(n,x) << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IEgoaW50IG4sIGludCB4KSAgIC8vIHJlY3Vyc2l2ZSB2ZXJzaW9uCnsKCWlmIChuIDw9IDApICAgICAgCgkJcmV0dXJuIC0xOwoJZWxzZSBpZiAobiA9PSAxKSAKCQlyZXR1cm4gMTsKCWVsc2UgaWYgKG4gPT0gMikgCgkJcmV0dXJuIDIgKiB4OwoJZWxzZSAKCQlyZXR1cm4gMiAqIHggKiBIKG4tMSwgeCkgLSAyICogbiAqIEgobiAtIDIsIHgpOyAvLyBzaGlmdCBuKzEsIG4gbi0xIHRvIG4sIG4tMSBuLTIgCn0KCmludCBIaShpbnQgbiwgaW50IHgpIC8vaXRlcmF0aXZlIHZlcnNpb24KewoJaWYgKG4gPD0gMCkgICAgICAKCQlyZXR1cm4gLTE7CgllbHNlIGlmIChuID09IDEpIAoJCXJldHVybiAxOwoJCQoJaW50IGFtMiA9IDE7ICAgICAgLy8gc3RhcnQgZm9yIGZvciBuLTIKICAgIGludCBhbTEgPSAyKng7ICAgIC8vIHN0YXJ0IGZvciBuLTEKCWlmIChuID09IDIpIAoJCXJldHVybiBhbTE7CgogICAgaW50IGFtOyAKICAgIGZvciAoaW50IGk9MzsgaTw9bjsgaSsrKSB7CiAgICAJYW0gPSAyKngqYW0xIC0gIDIqaSphbTI7CiAgICAJLy9wcmVwYXJlIG5leHQgaW50ZXJhdGlvbgogICAgCWFtMj1hbTE7IAogICAgCWFtMT1hbTsKICAgIH0KCXJldHVybiBhbTsgCn0KCgppbnQgbWFpbigpCnsKaW50IG4sIHg7Ci8vc3RkOjpjb3V0IDw8ICJFbnRlciB0aGUgbnVtYmVyIG46ICI7Ci8vc3RkOjpjaW4gPj4gbjsKLy9zdGQ6OmNvdXQgPDwgIkVudGVyIHRoZSBudW1iZXIgeDogIjsKLy9zdGQ6OmNpbiA+PiB4OwoKZm9yICh4PTUsIG49MTsgbjw2OyBuKyspIHsgIAoJc3RkOjpjb3V0IDw8IG48PCIgIjw8eDw8IiBSZWMgPSAiIDw8IEgobiwgeCkgPDwgIiBJdGVyID0gIiA8PCBIaShuLHgpIDw8IHN0ZDo6ZW5kbDsKIAl9Cn0=