/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
System.
out.
println("Rec: " + RecursiveFunction
(1000)); System.
out.
println("Flat0: " + NonRecursiveFunction0
(1000)); System.
out.
println("Flat1: " + NonRecursiveFunction1
(1000)); }
static float RecursiveFunction(int num){
//The num parameter represents the denominator that will be used
//The recursive function is continually called at lower increments of num
//If num is one, return 1 and do not call RecursiveFunction again
if (num == 1) {
return 1;
}
//Otherwise, return 1/num (in floating point decimal) and call RecursiveFunction with a parameter of num - 1
else {
return 1/(float)num + RecursiveFunction(num - 1);
}
}
//A Non-recursive version of RecursiveFunction that will be used to test RecursiveFunction
static float NonRecursiveFunction0(int num) {
//The total variable adds up the fractions
float total = 0;
//While num is greater than zero, add 1/num to total and then subtract 1 from num
while (num > 0) {
total += 1/(float)num;
num -= 1;
}
return total;
}
//A Non-recursive version of RecursiveFunction that will be used to test RecursiveFunction
static float NonRecursiveFunction1(int num) {
//The total variable adds up the fractions
float total = 0;
//While num is greater than zero, add 1/num to total and then subtract 1 from num
for (int i = 1; i <= num; ++i)
{
total += 1.0f / i;
}
return total;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN5c3RlbS5vdXQucHJpbnRsbigiUmVjOiAgICIgKyBSZWN1cnNpdmVGdW5jdGlvbigxMDAwKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJGbGF0MDogIiArIE5vblJlY3Vyc2l2ZUZ1bmN0aW9uMCgxMDAwKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJGbGF0MTogIiArIE5vblJlY3Vyc2l2ZUZ1bmN0aW9uMSgxMDAwKSk7Cgl9CgkKCXN0YXRpYyBmbG9hdCBSZWN1cnNpdmVGdW5jdGlvbihpbnQgbnVtKXsKCSAgICAvL1RoZSBudW0gcGFyYW1ldGVyIHJlcHJlc2VudHMgdGhlIGRlbm9taW5hdG9yIHRoYXQgd2lsbCBiZSB1c2VkCgkgICAgLy9UaGUgcmVjdXJzaXZlIGZ1bmN0aW9uIGlzIGNvbnRpbnVhbGx5IGNhbGxlZCBhdCBsb3dlciBpbmNyZW1lbnRzIG9mIG51bQoJCgkgICAgLy9JZiBudW0gaXMgb25lLCByZXR1cm4gMSBhbmQgZG8gbm90IGNhbGwgUmVjdXJzaXZlRnVuY3Rpb24gYWdhaW4KCSAgICBpZiAobnVtID09IDEpIHsKCSAgICAgICAgcmV0dXJuIDE7CgkgICAgfQoJICAgIC8vT3RoZXJ3aXNlLCByZXR1cm4gMS9udW0gKGluIGZsb2F0aW5nIHBvaW50IGRlY2ltYWwpIGFuZCBjYWxsIFJlY3Vyc2l2ZUZ1bmN0aW9uIHdpdGggYSBwYXJhbWV0ZXIgb2YgbnVtIC0gMQoJICAgIGVsc2UgewoJICAgICAgICByZXR1cm4gMS8oZmxvYXQpbnVtICsgUmVjdXJzaXZlRnVuY3Rpb24obnVtIC0gMSk7CgkgICAgfQoJfQoJCgkvL0EgTm9uLXJlY3Vyc2l2ZSB2ZXJzaW9uIG9mIFJlY3Vyc2l2ZUZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHRlc3QgUmVjdXJzaXZlRnVuY3Rpb24KCXN0YXRpYyBmbG9hdCBOb25SZWN1cnNpdmVGdW5jdGlvbjAoaW50IG51bSkgewoJICAgIC8vVGhlIHRvdGFsIHZhcmlhYmxlIGFkZHMgdXAgdGhlIGZyYWN0aW9ucwoJICAgIGZsb2F0IHRvdGFsID0gMDsKCSAgICAvL1doaWxlIG51bSBpcyBncmVhdGVyIHRoYW4gemVybywgYWRkIDEvbnVtIHRvIHRvdGFsIGFuZCB0aGVuIHN1YnRyYWN0IDEgZnJvbSBudW0KCSAgICB3aGlsZSAobnVtID4gMCkgewoJICAgICAgICB0b3RhbCArPSAxLyhmbG9hdCludW07CgkgICAgICAgIG51bSAtPSAxOwoJICAgIH0KCSAgICByZXR1cm4gdG90YWw7Cgl9CgkKCS8vQSBOb24tcmVjdXJzaXZlIHZlcnNpb24gb2YgUmVjdXJzaXZlRnVuY3Rpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gdGVzdCBSZWN1cnNpdmVGdW5jdGlvbgoJc3RhdGljIGZsb2F0IE5vblJlY3Vyc2l2ZUZ1bmN0aW9uMShpbnQgbnVtKSB7CgkgICAgLy9UaGUgdG90YWwgdmFyaWFibGUgYWRkcyB1cCB0aGUgZnJhY3Rpb25zCgkgICAgZmxvYXQgdG90YWwgPSAwOwoJICAgIC8vV2hpbGUgbnVtIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCBhZGQgMS9udW0gdG8gdG90YWwgYW5kIHRoZW4gc3VidHJhY3QgMSBmcm9tIG51bQoJICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG51bTsgKytpKQoJICAgIHsKCSAgICAJdG90YWwgKz0gMS4wZiAvIGk7CgkgICAgfQoJICAgIHJldHVybiB0b3RhbDsKCX0KfQ==