新聞中心
C語言:用遞歸函數(shù)求出f(x)=xn的值,要求:x和n的值在主函數(shù)中輸入,并在主函數(shù)中將運(yùn)算結(jié)果輸出
#include stdio.h
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)綏德免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
main()
{ int x,n;
long f(int x,int n);
scanf("%d %d",x,n);
printf("%ld",f(x,n));
system("PAUSE");
}
long f(int x,int n)
{ if(n==1)return(x);
else return(x*f(x,n-1));
}
用C語言的函數(shù)遞歸方法來求
#include stdio.h
#include math.h
void fun2(int m)
{
int k=0,a[10];
for(int i=2;im;i++)
if(m%i==0)
a[k++]=i;
for(int i=0;ik;i++)
{
printf("%d",a[i]);
if(i!=k-1)
printf(",");
}
}
void fun1(int m)
{
if(m2)
printf("%d is a prime number",m);
for(int i=2;i*i=m;i++)
if(m%i==0)
fun2(m);
else
printf("%d is a prime number",m);
}
int main( )
{ int n;
scanf("%d",n);
fun1(n);
return 0;
}
遞歸實(shí)現(xiàn)計(jì)算 c語言
int rec(int x,int n)
{
if(n==0)
return 1;
else
return rec(x,n-1)*x;
}
int main()
{
int x,n;
printf("請(qǐng)輸入x和n\n");
scanf("%d%d",x,n);
printf("結(jié)果是:%d\n",rec(x,n));
}
c語言遞歸函數(shù)
遞歸具體用法其實(shí)就是讓你把一個(gè)問題分解成很多個(gè)類似的情況,雖然你要解決這個(gè)問題非常難,莫名其妙,要你想幾年,但是把他一直遞歸分解,就變成很好理解的單種情況,而你整個(gè)問題又是跟這個(gè)單種情況類似,把整個(gè)問題通過遞歸調(diào)用一層一層分解到最低級(jí)簡(jiǎn)單的那種情況,就是你所需要理解的了。
一個(gè)函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身稱為遞歸調(diào)用。這種函數(shù)稱為遞歸函數(shù)。C語言允許函數(shù)的遞歸調(diào)用。在遞歸調(diào)用中,主調(diào)函數(shù)又是被調(diào)函數(shù)。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進(jìn)入新的一層。
(引自譚浩強(qiáng)的C語言書里)
用遞歸法計(jì)算n!可用下述公式表示:
n!=1 (n=0,1)
n×(n-1)! (n1)
具體如下long ff(int n)
{
long f;
if(n0) printf("n0,input error");
else if(n==0||n==1) f=1;
else f=ff(n-1)*n;
return(f);
}
main()
{
int n;
long y;
printf("\ninput a inteager number:\n");
scanf("%d",n);
y=ff(n);
printf("%d!=%ld",n,y);
}
較難題:一塊板上有三根針,A,B,C。A針上套有64個(gè)大小不等的圓盤,大的在下,小的在上。如圖5.4所示。要把這64個(gè)圓盤從A針移動(dòng)C針上,每次只能移動(dòng)一個(gè)圓盤,移動(dòng)可以借助B針進(jìn)行。但在任何時(shí)候,任何針上的圓盤都必須保持大盤在下,小盤在上。求移動(dòng)的步驟。
具體如下move(int n,int x,int y,int z)
{
if(n==1)
printf("%c--%c\n",x,z);
else
{
move(n-1,x,z,y);
printf("%c--%c\n",x,z);
move(n-1,y,x,z);
}
}
main()
{
int h;
printf("\ninput number:\n");
scanf("%d",h);
printf("the step to moving %2d diskes:\n",h);
move(h,'a','b','c');
}
從程序中可以看出,move函數(shù)是一個(gè)遞歸函數(shù),它有四個(gè)形參n,x,y,z。n表示圓盤數(shù),x,y,z分別表示三根針。move 函數(shù)的功能是把x上的n個(gè)圓盤移動(dòng)到z上。當(dāng)n==1時(shí),直接把x上的圓盤移至z上,輸出x→z。如n!=1則分為三步:遞歸調(diào)用move函數(shù),把n-1個(gè)圓盤從x移到y(tǒng);輸出x→z;遞歸調(diào)用move函數(shù),把n-1個(gè)圓盤從y移到z。在遞歸調(diào)用過程中n=n-1,故n的值逐次遞減,最后n=1時(shí),終止遞歸,逐層返回。當(dāng)n=4 時(shí)程序運(yùn)行的結(jié)果為:
新聞名稱:c語言用遞歸公式求函數(shù)值 c語言遞歸函數(shù)的概念及用法
鏈接URL:http://m.biofuelwatch.net/article/hghsjd.html