目录
一、💥
关于递归的描述错误的是:( )
A.存在限制条件,当满足这个限制条件的时候,递归便不再继续
B.每次递归调用之后越来越接近这个限制条件
C.递归可以无限递归下去
D.递归层次太深,会出现栈溢出现象
🎸C
递归的条件:
存在限制条件,当满足这个限制条件的时候,递归便不再继续
每次递归调用之后越来越接近这个限制条件
注意:
递归层次太深,会出现栈溢出现象
递归不会无限递归,有限制条件,达到限制条件就会终止
二、💥
根据下面递归函数:调用函数Fun(2),返回值是多少( )
A.2
B.4
C.8
D.16
int Fun(int n)
{
if(n==5)
return 2;
else
return 2*Fun(n+1);
}
🎸D
return 2*2*Fun(2+1);
return 2*2*2*Fun(4+1);
n==5;
return 2*2*2*2;
三、💥
打印一个数的每一位
递归方式实现打印一个整数的每一位
🎸小奔的结果:
void print(int k)
{
if (k > 9)
print(k/10);
printf("%d ", k % 10);
}
int main()
{
int k = 0;
scanf("%d", &k);
//输入数
print(k);
//打印一个数的每一位
return 0;
}
四、💥
求阶乘
递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
🎸小奔的结果:
//递归
#include <stdio.h>
int Factorial(int x)
{
static int y = 1;
if (x > 0)
y = Factorial(x - 1) * x;
else
return y;
}
int main()
{
int k = 0;
scanf("%d", &k);
//输入求谁的阶乘
int n = 0;
n=Factorial(k);