У меня есть запрос относительно рекурсивной функции. Это моя программа.C проблемы с рекурсией
#include <stdio.h>
int fun(int);
int main(void)
{
int x;
int k=3;
x = fun(k);
printf("%d\n",x);
return 0;
}
int fun(int a)
{
int f;
if(a == 1) return (1);
f = 2 + fun(a-1);
return (f);
}
, где у меня есть значение K=3
в STEP-6
. В STEP-7
функция fun(k)
передает значение K вызываемой функции в STEP-11
int fun(int a)
. В вызываемой функции fun(int a)
рекурсия произошла 2 раза, т.е. (3,2), делая значение a=1
. Позднее в STEP-14
значение f
равно 3, так как f = 2 + (fun (1) = 1). В STEP-16
он возвращается к вызываемой функции i.e fun(int a)=3
. Который должен напечатать значение x is 3
, маловероятно, что это не так. Это x = 5
сделал (не) вы пропустите '2 + ..' часть в случае вызова со значением 3? –
В вызове 'fun (3)' есть два ** последующих рекурсивных вызова ** со значениями 2 и 1 ... –
@SouravGhosh Да, я так думаю: p –