首页 > 其他分享 >Bug与函数递归

Bug与函数递归

时间:2023-10-03 17:03:08浏览次数:32  
标签:return 函数 递归 int 函数调用 Fac Bug 调试

调试(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;
}

标签:return,函数,递归,int,函数调用,Fac,Bug,调试
From: https://blog.51cto.com/u_16261646/7693549

相关文章

  • 以下是一个复杂的 C 语言代码示例,展示了如何使用递归函数来计算斐波那契数列: ```c #i
    以下是一个复杂的C语言代码示例,展示了如何使用递归函数来计算斐波那契数列:#include<stdio.h>//递归函数计算斐波那契数列intfibonacci(intn){if(n<=1){returnn;}returnfibonacci(n-1)+fibonacci(n-2);}intmain(){intnum;......
  • 前端 splice函数
    splice()函数是JavaScript中数组对象的一个方法,用于修改数组的内容。它可以实现删除、插入和替换数组中的元素。splice()函数的语法如下:array.splice(start,deleteCount,item1,item2,...)start:指定要修改的起始位置的索引。如果为负数,则从数组末尾开始计算,默认为0。deleteCoun......
  • Angular inlineCriticalCss 和内部函数 walkStyleRules 介绍
    有一个客户启用了AngularServerSideRendering,并且启用了inlineCriticalCss,后来发现在Dynatrace的hotspot里的vendor.js文件有个名叫walkStyleRules的函数,耗时比较多。如下图所示:Angular服务器端渲染(ServerSideRendering)Angular的服务器端渲染是一种技术,允许在......
  • C++特种成员函数生成机制及相关原则
    C++特种成员函数生成机制及相关原则注:默认C++标准是C++11及以后的标准,因为C++11之前的标准定义的默认成员函数不包含移动构造函数和移动赋值运算符1.C++默认成员函数默认成员函数的定义:类中没有显示声明,在需要时由编译器自动生成的函数,包括默认构造函数、默认析构函数、......
  • Shell 函数详解(函数定义、函数调用、参数变量)
    Shell函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。Shell中的函数和C++、Java、Python、C# 等其它编程语言中的函数类似,只是在语法细节有所差别。Shell函数定义的语法格式如下:functionname(){statements[re......
  • 函数指针与回调函数
    (目录)1.函数指针前面我们学的:整形指针是指向整形的指针字符指针是指向字符的指针数组指针是指向数组的指针所以函数指针就是指向函数的指针假如有一个int类型变量a,要取它的地址就是&a,有一个字符类型变量c,要取它的地址就是&c,那么一个函数的地址是怎样取到的呢。接下来,我......
  • python 3 内嵌函数和闭包
    内嵌函数:本质是函数里又嵌套一个函数def fun1():       print('fun1()在被调用')       def fun2():               print('fun2()在被调用')    fun2()  #调用fun2()  fun1()fun1()正在被调用fun2()正在被调用内嵌函数的作......
  • C基础-函数
    库函数原因:因有些功能会频发使用库函数具体介绍可查下方链接:strcpy-C++Reference(cplusplus.com)自定义函数返回值类型函数名(形参){语句;}函数的调用形参:在不接收值时,不占用内存实参:占用内存,可以是常量,变量,表达式,函数相关具体位置可参看下方代码传值调用形参和实参有不......
  • [C语言]动态内存分配遇上函数-经典错误纠错
    题目来自nice2016校招笔试题直接完整代码#include<stdio.h>#include<stdlib.h>#include<string.h>voidGetMemory(char*p)//申请内存{ p=(char*)malloc(100);}voidTest(){ char*str=NULL; GetMemory(str); strcpy(str,"helloworld")......
  • init函数
    init函数代码//example.gopackagetestimport( "GoExample/util" "fmt")varA=util.F("example.A")//注意:init函数可以重名funcinit(){ util.F("example.init1")}funcinit(){ util.F("example.init2")}/......