当前位置 : 主页 > 编程语言 > c语言 >

Bug与函数递归

来源:互联网 收集:自由互联 发布时间:2023-10-08
调试(debug) 发现程序中存在的问题,然后找到问题,这个找问题的过程叫称为调试 Debug和Release的区别 Debug调试版本,仅调试,不优化Release给用户使用,在代码大小和运行速度都是最优

调试(debug)

发现程序中存在的问题,然后找到问题,这个找问题的过程叫称为调试

Debug和Release的区别

Debug 调试版本,仅调试,不优化 Release 给用户使用,在代码大小和运行速度都是最优,不能调试

函数递归

自己调用自己 目的:大事化小 必要条件:递归存在限制条件,每次递归调用后越来越接近这个限制条件

求n的阶乘

不考虑n太大的情况,否侧会溢出

int Fac(int n)
{
	if (n > 0)
	{
		return Fac(n - 1) * n;
	}
	else
	return 1;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int c=Fac(n);
	printf("%d\n", c);
	return 0;
}

顺序打印一个整数的每一位

void Fac(int n)
{
	if (n > 9)
	{
		Fac(n / 10);
	}
	printf("%d ", n % 10);

}
int main()
{
	int n = 0;
	scanf("%d", &n);
	Fac(n);
	return 0;
}

在c语言的每一次函数调用,都需要为本次函数调用在栈区申请一块内存空间来保存函数调用期间的各种局部变量的值,这块空间时运行时堆栈,或函数栈帧。 递归容易引起栈溢出。

可用迭代的方式计算n的阶乘

void Fac(int n)
{
	int i = 0;
	int ret = 1;
	for (i = 1; i <= n; i++)
	{
		ret *= i;
	}
	printf("%d\n", ret);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	Fac(n);
	return 0;
}

求第n个斐波那契数列

int Fac(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=Fac(n);
	printf("%d\n", ret);
	return 0;
}
上一篇:10.0 探索API调试事件原理
下一篇:没有了
网友评论