Обычно это не очень хороший вопрос в соответствии с рекомендациями StackOverflow. Но ваша функция только выполняет условие else
x-1
раз, а затем, наконец, условие if
один раз, так как x==1
истинно, когда x становится 1.
, т. Е. Для exam(5)
, происходит следующее :
x = 5, y = 1, `else` executed 1 * exam(4)
x = 4, y = 1, `else` executed 1 * 1 * exam(3)
x = 3, y = 1, `else` executed 1 * 1 * 1 * exam(2)
x = 2, y = 1, `else` executed 1 * 1 * 1 * 1 * exam(1)
x = 1, y = 1, `if` executed 1 * 1 * 1 * 1 * 1
Последнее выражение вашего else
оператора y<-y+1
никогда не выполняется, потому что вы return(y*exam(x-1))
до него оценивается.