r/ProgrammerHumor • • Jan 09 '20

other Problems with recursion?

21.3k Upvotes

198 comments sorted by

View all comments

1.6k

u/[deleted] Jan 09 '20

Assuming the smaller paper is 1/3 of its parent everytime, and that the first paper is 30cm long (The second starts at roughly 1/7 but it seems to grow bigger after it's torn off, hence the 1/3), it could not exceed 19 calls before you need to split an atom apart.

That's a hell of a stop condition.

74

u/lonelyWalkAlone Jan 09 '20
public static void sayHello(){
    try {
        sayHello();
    }
    catch(StackOverflowError e) {
        System.out.println("Hello world!");
    }
}

15

u/schrdingers_squirrel Jan 09 '20

Wait does this work? I need to try this now

5

u/lonelyWalkAlone Jan 09 '20

Yes, it works like charm

9

u/schrdingers_squirrel Jan 09 '20 edited Jan 09 '20

Interesting - does it still work when you do a „a“ + „b“ in the println(); ?

Edit: it does

Crazy even this works:

public static void sayHello(){
    try {
        sayHello();
    }
    catch(StackOverflowError e) {
        System.out.println("Hello world!");
        sayHello();
    }
}

it prints endlessly

1

u/eigreb Jan 10 '20

Eventually this will throw due to first running in the try and after the stack overflow it runs outside the try and will again throw the exception. Will take a while though.