c语言看程序写结果?

c语言看程序写结果?,第1张

答案是:7。

被调函数sub是扮桐一个递归函数,有两处注意点:

一、参数1这里传递的是实参x的地址,因此sub函数中a地址里的值改变,x的值也变。

二、注手携意sub中if没有大括号,作用域仅限下一句代码,也就说*a+=k这句代码是在if作用域之外的。无论if判读成不成立,*a+=k都会执行。

所以按照递归顺序执行:

第一层:厅薯坦n的值为8,k的值为1。执行代码:sub(x地址,4,2)x+=1(*a的值就是x的值)

第二层:n的值为4,k的值为2。执行代码:sub(x地址,2,4)x+=2

第三层:n的值为2,k的值为4。执行代码:x+=4

递归函数中自调后的代码是从最底层往开始执行,一层一层往回返回的。

所以实际执行顺序是:x+=4x+=2x+=1。

x初值0,所以是7。

首先这是函数递归

将7传入fun函数,执行7/2 >1 调巧橡用函数自身传入3 执行3/2 >1不成立或猜打印当前x的值 为3,回到上衫宽型一层函数 打印当前x的值 为 7。所以输出 3 7

下面是测试的结果:

测试结果

思路:先通过程序获得阶乘的值,之后再将阶乘相加,早慎求阶乘时和相加时都用递归的写法

首先是求阶乘:

int factorial(int index){

  int sum = 0

  if (index == 1){

      sum = 1

  }else{

   世睁胡  搜拦 sum = index * factorial(index-1)

  }

  return sum

}

之后再求和:

int add_recursion(int maxnum){

  int sum = 0

  if (maxnum == 1){

      sum = factorial(maxnum)

  }else{

      sum = factorial(maxnum) + add_recursion(maxnum-1)

  }

  return sum

}

下面是完整的代码:

完整代码


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12522455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存