首页 > 试题广场 >

调用函数Fun(2),返回值是多少

[单选题]
根据下面递归函数:调用函数Fun(2),返回值是多少()
int Fun(int n)          
{ 
    if(n==5)     
        return 2;        
    else        
        return 2*Fun(n+1);           
}
  • 2
  • 4
  • 8
  • 16
fun(2)=2*fun (3)=4*fun(4)...
发表于 2022-02-04 14:08:01 回复(0)
欲求F(2),因F(2)=2*F(3),则要求F(3),同理要求F(4),F(5)
n=5,Fun(5)=2
Fun(2)=2*Fun(3)=4*Fun(4)=8*Fun(5)=8*2=16
发表于 2021-12-06 20:41:47 回复(0)
n =5;return 2;
n =4;return 4;
n =3;return 8;
n =2;return 16;
发表于 2021-05-13 00:06:08 回复(0)
递归完,再逆序 现在,我们调用 Fun(2),开始递归: 1.Fun(2): 2.进入函数,n 的值是 2。 3.n 不等于 5,因此执行 return 2 * Fun(n + 1)。 4.这时调用了 Fun(3)。 5.Fun(3): 6.进入函数,n 的值是 3。 7.n 不等于 5,因此执行 return 2 * Fun(n + 1)。 8.这时调用了 Fun(4)。 9.Fun(4): 10.进入函数,n 的值是 4。 11.n 不等于 5,因此执行 return 2 * Fun(n + 1)。 12.这时调用了 Fun(5)。 13.Fun(5): 14.进入函数,n 的值是 5。 15.此时满足 if (n == 5),执行 return 2。 现在,递归开始回升: 16.返回到 Fun(4): 17.Fun(5) 返回值是 2,所以 Fun(4) 返回值是 2 * 2 = 4。 18.返回到 Fun(3): 19.Fun(4) 返回值是 4,所以 Fun(3) 返回值是 2 * 4 = 8。 20.返回到 Fun(2): 21.Fun(3) 返回值是 8,所以 Fun(2) 返回值是 2 * 8 = 16。 最终,调用 Fun(2) 的返回值是 16。递归的基本思想在于将大问题划分为更小的、相似的子问题,并逐步解决这些子问题。在这个例子中,递归调用了一系列函数,直到 n 的值等于 5 为止。
编辑于 2023-12-08 08:24:22 回复(0)
对于递归,写出递归过程,逆过来考虑就不会很晕了。
发表于 2021-04-26 13:15:03 回复(0)
晕了
发表于 2021-04-11 03:21:02 回复(0)
简单递归,没什么好说的
发表于 2020-10-17 14:50:35 回复(3)
D
发表于 2018-04-23 16:30:59 回复(0)