首页 > 试题广场 >

给定fun函数如下, int fun(int x) { r

[不定项选择题]
给定fun函数如下,
int fun(int x) {
 return (x==1) ? 1 : (x + fun(x-1));
 }
那么以下说法正确的是()
  • fun(10)的输出结果是55
  • fun(10)的输出结果是10
  • fun(0)的执行结果是栈溢出
  • fun(2)的执行结果是栈溢出
栈溢出怎么是空指针异常?
发表于 2020-11-12 17:25:40 回复(0)
给定的fun函数等同于下面函数
#include<stdio.h>
int main()

{     int n;     int num = 0;
   scanf("%d",&n);
   for(;n>0;n--)
   {
       num+=n;
   }
    printf("%d\n",num);
    return 0;
}
其实就是自减求和

编辑于 2020-01-02 22:22:55 回复(0)

fun(10)的输出结果是55,结果肯定大于10

根据给定的函数定义,fun(x)的递推关系是fun(x) = x + fun(x-1),其中当x等于1时,返回值为1。因此,当调用fun(10)时,递归展开过程如下:

fun(10) = 10 + fun(9) = 10 + (9 + fun(8)) = 10 + (9 + (8 + fun(7))) = ... = 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1

最终的结果为55。因此,选项A正确,fun(10)的输出结果是55。
fun(0)会一直递归调用 fun(x-1)
发表于 2023-10-17 14:29:49 回复(0)
无限递归只会爆栈 你来个空指针异常什么鬼 简直离谱
发表于 2020-11-04 14:05:20 回复(0)
C项有问题吧,怎末会有空指针异常昵,压根没有指针
发表于 2020-06-29 23:41:02 回复(0)
递归出口为1,取不到0
发表于 2023-07-24 19:07:13 回复(0)
答: 对于a选项的理解,实际上可以逆过来,它无非就是递归,当我们传入的参数是10时,我们实际上可以从10减到1,每次都减1。所以就是求从10加到1。等差数列公式一求和就得到55了。
发表于 2021-09-24 20:28:48 回复(0)
JAVA弄多了吧,空指针异常明明是JAVA的
发表于 2021-01-18 19:01:11 回复(0)
NullPointException是来搞笑的
发表于 2020-12-12 18:59:08 回复(1)
Linux下执行会一直负值运行下去,报段错误
发表于 2020-08-22 21:54:45 回复(0)
应该是0-1-2-3-4无限下去吧
发表于 2020-08-22 18:50:27 回复(0)
NullPointException给我整蒙了,运行了一边发现是Stack Overflow
发表于 2020-06-29 21:52:37 回复(0)
实践一下
发表于 2019-12-06 09:34:54 回复(0)
斐波那契
发表于 2019-08-22 19:56:49 回复(2)