递归和迭代的效率比较

#include<stdio.h>
unsigned long fanc(int n)//递归调用
{
	
	if(n<=0)
	{
		return 1;
	}
	else
	{
		return (n*fanc(n-1));
	}
}


unsigned long factorical(int n)//迭代算法
{
	int  result=1;

	while(n>0)
	{
		result*=n;
		n-=1;
	}
	return result;


}
main()
{	
	int n;
	printf("input the num :");
	scanf("%d",&n);
	printf("the sum is %u\n",fanc(n));
	printf("the sum is %lu\n",factorical(n));
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
归和代是两种常见的解决问题的编程方法,它们在处理数据结构和算法时有着不同的执行机制和理解方式。 **归**: 归是一种通过将大问题分解为更小的相同或类似子问题,并调用自身来解决这些子问题的过程。它通常涉及一个函数(或方法)调用自身,并在每次调用时处理规模更小的问题,直到达到基本情况(也称为归基或终止条件),然后逐级返回结果。归的一个关键特征是每次调用都需要保存状态以便于后续恢复。 **代**: 代则是在循环结构中解决问题,通常使用循环(如for、while等)来逐步执行一系列步骤,每次代都会更新当前状态,直到达到预设的终止条件。代不需要函数调用自身,而是直接在循环内部完成任务,没有明确的“归”过程。 **区别**: 1. **思维方式**:归是自上而下的,像倒推游戏一样;代则是自底向上的,像爬楼梯一样。 2. **效率**:归可能会导致大量的函数调用开销,如果归深度过深可能导致栈溢出;而代通常更节省内存。 3. **控制流**:归依赖于函数返回和调用,易于理解和表达问题的本质;代则更加直观,便于实现复杂的数据结构遍历。 4. **语言支持**:并非所有编程语言都对归有良好的支持,一些有限制的语言可能需要特殊技巧或库来避免栈溢出。 **相关问题**: 1. 归是如何避免无限循环的? 2. 什么情况下适合使用代而非归? 3. 归和代哪种更容易理解和调试?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值