首页 > 试题广场 >

设有一个递归程序如下:intf(intn){if(n=0)

[单选题]
设有一个递归程序如下:int f(int n){if(n<=0) return 1;else return n*f(n-1);} 则计算f(n)则需要调用该函数的次数为( )
  • n
  • n +1
  • n + 2
  • n -1

n 调用次数

0 1 直接return

1 2 f(1) f(0)

2 3 f(2) f(1) f(0)

...

发表于 2021-08-10 10:26:46 回复(0)
当参数为n的时候调用一次,n在减去1后又被调用一次,以此类推当n=1时总共调用了n次,在n=1再减1时有调用了f(0)又算一次,因为此刻跳出递归,最后一共调用了n+1次。这种情况有点像锯木头,调用次数就像是锯的段数,锯的次数就像是在n-1,锯木头的结果也是锯n次获得n+1段木头,这里递归了n次调用了n+1次方法。

发表于 2021-07-08 17:19:29 回复(0)