【C++003】基础算法之阶乘和冒泡

本文详细探讨了C++中阶乘算法的实现,从正向和反向思维角度解释了计算过程,并解答了为何从n=1开始计算。同时,介绍了冒泡排序法的基本原理及适用场景,讨论了在不同情况下如何组织代码以提高调试效率。最后,提到了随机数种子在测试数据中的应用和注意事项。
摘要由CSDN通过智能技术生成

阶乘算法

阶乘算法,顾名思义运用阶乘,进行对其数值的计算。
比如:

#include<iostream>
using namespace std;

long fac( int ); //定义一个函数,其名称为 fac。

int main( )
{
   
	int n;      //定义一个数 n 表明输入值。
	cout << "Please input an integer: ";
	cin >> n;
	long f;     // f 为结果输出的值
	f = fac( n );    //调用 fac 这个函数。
	cout << '\n' << n << " ! = " << f;

	return 0;
}

long fac( int n )
{
   
	long f;
	if ( n < 0 )//讨论当 n<0 时的情况(后面会解释为什么)
	{
   
		cout << "Data Error.";
		f = -1;
	}
	else if ( n ==0 || n == 1 )
	{
   
		f = 1;
	}
	else
	{
   
		f = fac( n - 1 ) * n;  
		/*拿前一个 fac 的值,乘以 n。求得最终阶乘
		结果 f。(此处的 f 数值和 main 函数中的 f
		值虽然是一样,但是他们表示的含义不一样,
		mian函数中的是实参,而这里面是形参,是个变量)
		*/
	}
	
	return f;
}

其实我刚学 C++ 的时候直接套模板,没仔细研究,因而没有什么疑惑的,但是回头看,仔细推敲时候,有些地方就有了疑惑。说实话,代码这个东西其实一个是自己的理解,一个就是模板。蓝桥杯考的正是如此。

再说说我回头之时看到的一些疑惑。

	if ( n < 0 )
	{
   
		cout << "Data Error.";
		f = -1;
	}

看这儿其实也看不出来什么,更应该从后面的

	{
   
		f = fac( n - 1 ) * n; 
	}

这儿能看出来就是,这个函数需要进行多次运算,多次 if 这个循环才能计算出结果。我们看这个运算,能感觉到这个代码是从后往前计算,但是我们可以运用反向思维,想的时候从前往后想,从前往后推算,比如

	
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

3Q3qQ

谢谢老板打赏,我将会继续努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值