#include stdio.h
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作與策劃設(shè)計(jì),古田網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:古田等地區(qū)。古田做網(wǎng)站價(jià)格咨詢:18980820575
int Func(int n)
{
if(n 2)
return 1;
else
return n*Func(n-1);
}
int main()
{
int n = 5;
printf("n! = %d\n",Func(n));
return 0;
}
執(zhí)行過(guò)程:
-》Func(5)
-》5*Func(4)
-》5*(4*Func(3))
-》5*(4*(3*Func(2))))
-》5*(4*(3*(2*Func(1))))
當(dāng)n為0的時(shí)候停止遞歸,返回結(jié)果
由于遇到1的時(shí)候返回1,那么Func(1)=1
所以結(jié)果是5*(4*(3*(2*1))) = 120
#include stdio.h
int Func(int n)
{
if(n 2)
return 1;
else
return n*Func(n-1);
}
int main()
{
int n = 5;
printf("n! = %d\n",Func(n));
return 0;
}
執(zhí)行過(guò)程:
-》Func(5)
-》5*Func(4)
-》5*(4*Func(3))
-》5*(4*(3*Func(2))))
-》5*(4*(3*(2*Func(1))))
當(dāng)n為0的時(shí)候停止遞歸,返回結(jié)果
由于遇到1的時(shí)候返回1,那么Func(1)=1
所以結(jié)果是5*(4*(3*(2*1))) = 120
long?ff(int?n)???????//函數(shù)作用是計(jì)算N的階乘????????????????????
{?
long?f;
if(n0)printf("n0,input?error");//n不能為負(fù)數(shù)
else?if(n==0||n==1)f=1;//這里使ff(0)和ff(1)等于1
else?f=ff(n-1)*n;//這里使ff(n)?=?n?*?ff(n-1),重要,因?yàn)楫?dāng)形參n?=?n-1時(shí),ff(n-1)?=?ff(n-2)?*?(n-1),所以這一步實(shí)際實(shí)現(xiàn)了n階乘計(jì)算,即ff(n)?=?n?*?ff(n-1)?=?n?*?(n-1)?*?ff(n-2).....*ff(1)?*ff(0),因?yàn)閒f(0)?==?ff(1)?==?1.所以ff(n)?=?n!實(shí)現(xiàn)。
return(f);
}