потому что условный оператор, в котором находится ваша строка 3, говорит, что должен возвращать 1, только если переданный аргумент n
равен 0. Функция, которую вы вызываете в конце кода, передает аргумент5.
первый оператор return будет работать только в том случае, если условие в операторе if истинно, в противном случае он переходит ко второму возврату, который снова вызывает функцию внутри себя.