【C语言】函数和递归的基础题目

计算n的阶乘

image.png

递归

//使用递归计算n的阶乘
#include<stdio.h>
int Jiecheng(int n)
{
    
    
	if (n<=1)
	{
    
    
		return 1;
	}
	else
	{
    
    
		return n * Jiecheng(n - 1);
	}
}
int main()
{
    
    
	int n = 0;
	scanf("%d", &n);
	int ret = Jiecheng(n);
	printf("%d", ret);
	return 0;
}

红色的线是在调用,蓝色的线是返回值。
image.png
通过以上的图片可以更加清晰的看出递归的执行过程。

循环

int Jiecheng(int n)
{
    
    
	int count = 1;
	while (n>1)
	{
    
    
		count = count * n;
		n--;
	}
	return count;
}
int main()
{
    
    
	int n = 0;
	scanf("%d", &n);
	int ret = Jiecheng(n);
	printf("%d", ret);
	return 0;
}

求第n个斐波那契数。(不考虑溢出)

image.png

递归

#include<stdio.h>
int Fib(int n)
{
    
    
	if (n>=3)
	{
    
    
		return Fib(n - 1) + Fib(n - 2);
	}
	else
	{
    
    
		return 1;
	}
}
int main()
{
    
    
	int n = 0;
	scanf("%d", &n);
	int ret = Fib(n);
	printf("%d", ret);
	return 0;
}

循环

#include<stdio.h>
int Fib(int n)
{
    
    
	int a = 1;
	int b = 1;
	int c = 1;
	while (n>2)
	{
    
    
		c = a + b;
		a = b;
		b = c;
		n--;
	}
	return c;
}
int main()
{
    
    
	int n = 0;
	scanf("%d", &n);
	int ret = Fib(n);
	printf("%d", ret);
	return 0;
}

本篇博客主要介绍了怎么使用递归和循环来解题,希望能帮你更加好的理解递归和循环。

猜你喜欢

转载自blog.csdn.net/weixin_63284756/article/details/130422635