#includestdio.h
創(chuàng)新互聯(lián)主要從事做網(wǎng)站、成都網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)京山,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
long func(long n)
{
if(n==0||n==1)return n;
else return func(n-1)+func(n-2);
}
main()
{
long n;
printf("please input n:");
scanf("%ld",n);
printf("the result is %ld",func(n));
}
#include
#define
COL
5
//一行輸出5個
long
fibonacci(int
n)
{
//fibonacci函數(shù)的遞歸函數(shù)
if
(0==n||1==n)
{
//fibonacci函數(shù)遞歸的出口
return
1;
}
else
{
return
fibonacci(n-1)+fibonacci(n-2);
//反復(fù)遞歸自身函數(shù)直到碰到出口處再返回就能計算出第n項(xiàng)的值
}
}
int
main(void)
{
int
i,n;
n=
17;
printf("Fibonacci數(shù)列的前%d項(xiàng)\n",
n);
for
(i=0;
i
{
printf("%-10ld",fibonacci(i++));
//調(diào)用遞歸函數(shù)并且打印出返回值
if(i%COL==0)
{
//若對COL取余等于0就換行,也就是控制每行輸出多少個,
//而COL=10就是每行輸出10個
printf("\n");
}
}
printf("\n");
return
0;
}
#include stdio.h
long int F(int n)
{
if (n==1||!n) {
return n;
}
else return F(n-1)+F(n-2);
}
int main(void)
{
int i,n;
printf("n=");
scanf("%d",n);
for (i=0; in; i++) {
printf("%-10ld",F(i));
}
return 0;
}
在數(shù)理邏輯和計算機(jī)科學(xué)中
遞歸函數(shù)或μ-遞歸函數(shù)是一類從自然數(shù)到自然數(shù)的函數(shù),它是在某種直覺意義上是"可計算的" 。事實(shí)上,在可計算性理論中證明了遞歸函數(shù)精確的是圖靈機(jī)的可計算函數(shù)。遞歸函數(shù)有關(guān)于原始遞歸函數(shù),并且它們的歸納定義(見下)建造在原始遞歸函數(shù)之上。但是,不是所有遞歸函數(shù)都是原始遞歸函數(shù) — 最著名的這種函數(shù)是阿克曼函數(shù)。
以上內(nèi)容參考:百度百科-遞歸函數(shù)
#include?stdio.h
double?RecursiveSum(int?n,?int?max)
{
if(n??max)
{
return?RecursiveSum(n+1,?max)?+?(double)n/(2*n+1);
}
else
{
return?(double)n/(2*n+1);
}
}
void?main()
{
int?max;
double?result;
scanf("%d",?max);
result?=?RecursiveSum(1,?max);
printf("%.15f\n",?result);
//?我用的是VS2008,以下部分為了方便看結(jié)果
getchar();?
getchar();
}
#include stdio.h
int fun(int n)
{
if(n==0)
? return 0;
return n%2?2*fun(n-1)+1:2*fun(n-1)-1;
}
int main()
{
int n;
scanf("%d",n);
printf("%d\n",fun(n));
return 0;
}
遞歸函數(shù)如下:
首先斐波拉楔數(shù)列的前n項(xiàng)和遞推公式為S(n)=S(n-1)+S(n-2)+1;
(根據(jù)通項(xiàng)公式a[n]=a[n-1]+a[n-2]很容易推導(dǎo)出來)
遞歸函數(shù)如下所示;
int sum_Fibonacci(int n)
{
if(1 == n)
return 1;
else if(2 == n)
rerurn 2;
else
return sum_Fibonacci(n-1)+sum_Fibonacci(n-2)+1;
}