求N!的C的两种算法实现,求阶乘.从失败中寻找自我

#include <stdio.h>

int main(int argc, char * argv[])
{
	int n;
	int r = 1;
	printf("求N!的值,请输入要计算N的值:");
	scanf("%d",&n);
	printf("您要计算的是%d的阶乘。\n",n);
	if(n<0)
	{
		printf("这个数好像无法计算阶乘。\n");
		return 0;
	}
	else if( 0 == n || 1 == n)
		r = 1;
	else
	{
		for(int i = n; i>1;i--)
		{
			r *= i;
		}
	}
	printf("%d的阶乘是%d\n", n,r);
	return 0;
}

以上是用for循环方式实现的

 

以下是用递归算法实现

#include <stdio.h>

float calc_jie_cheng(int i)
{
	float res;
	
	if(i<0)
	{
		printf("这个数好像无法计算阶乘。\n");
		return 0;
	}
	else if( 0 == i || 1 == i)
		res = 1;
	else
	{
		res = calc_jie_cheng(i - 1) * i;
	}

	return res;
	//return ((i == 1 || i == 0)?1:((i<0)?0:(calc_jie_cheng(i - 1) * i)));
}

int main(int argc, char * argv[])
{
	int n;
	float r;
	printf("求N!的值,请输入要计算N的值:");
	scanf("%d",&n);
	printf("您要计算的是%d的阶乘。\n",n);
	r = calc_jie_cheng(n);
	printf("%d的阶乘是%10.0f\n", n,r);
	return 0;
}



以上均在VC++6.0测试通过,2013.04.29, 苦逼的程序猿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值