C语言函数递归 --- 复习题(1)
  uUWKQE7Avyk4 2023年11月02日 36 0

一.单选题:

1.下列选项关于递归说法错误的是()

A. 存在限制条件,当满足限制条件时,递归停止

B. 每次递归调用后越来越接近递归的条件

C. 递归可以无限制递归下去

D. 递归层次太深容易出现栈溢出


答案:C,这题错误的选项显而易见是C,我们之前将递归的时候就说过递归的两个要求,第一个是需要有限制条件,二是每次递归执行完成后需要更加接近递归的条件,我们之前写过一段代码:

#include<stdio.h>
int main(void)
{
main();
return 0;
}

这段代码会无限递归下去,直到栈区溢出,这就是因为递归的层次过深,且没有有效地限制条件所导致的

2.观察以下代码,算出若调用函数Fun(2)则函数返回值是多少:

int Fun(int n)
{
if(n==5)
  return 2;
else
  return 2*Fun(n+1);
}

A. 2

B. 4

C. 8

D. 16


答案:D,我们如果对递归不是很熟悉那就可以采用画图的形式,如图所示:

C语言函数递归 --- 复习题(1)_C语言

第一次将2传入Fun()函数中,这时候n=2所以执行的是else语句会返回2*Fun(3),这时候递归就开始了,将3传入Fun()函数中,3≠5,再次执行else语句中的内容,这时候n=3,所以返回值为 2*Fun(4),将4传入Fun()函数中4≠5,再次执行else语句,直到n=5,满足if语句中的内容,返回2,所以最后得到的结果为16,故选D

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读