学习日记------------递归函数

递归调用:函数可以直接或者间接调用自身

以一个函数为例

#include<iostream>
using namespace std;

//cal n!
unsigned fac(unsigned n){
	unsigned f;
	if(n==0)
		f=1;
	else
		f=fac(n-1)*n;
	return f ;
}


int main(){
	unsigned n;
	cout<<"Enter a postive integer: ";
	cin>>n;
	unsigned y=fac(n);
	cout<<n<<"!="<<y<<endl;
	return 0;

}

下面是计算机执行过程

//下面是计算机执行代码过程,这里如果输入3计算机将先执行主函数调用fac(3)

unsigned fac(3){
	unsigned f;
	if(n==0)
		f=1;
	else
		f=fac(2)*3;    //这里将继续调用fac  并且计算fac(2)
	return f ;
}


unsigned fac(2){
	unsigned f;
	if(n==0)
		f=1;
	else
		f=fac(1)*2;    //这里将继续调用fac  并且计算fac(1)
	return f ;
}

unsigned fac(1){
	unsigned f;
	if(n==0)
		f=1;  // 到这一步判断为true  所以下面返回f=1  然后fac(1) =1  回到fac(2)函数 计算结果是f=fac(1)*2  返回值是 f=1*2=2  然后再回到fac(3)函数  计算结果是f=fac(2)*3=2*3 return f=7 
	else
		f=fac(1)*2;    //这里将继续调用fac  并且计算fac(1)
	return f ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值