a1=1
創(chuàng)新互聯(lián)公司長(zhǎng)期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為扶風(fēng)企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),扶風(fēng)網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
a2=a1* 2^1
a3=a2* 2^2
.
.
.
a(n-1)=a(n-2)* 2^(n-2)
a(n)=a(n-1)* 2^(n-1)
相乘 得
a(n)=2^1 * 2^2 ... * 2^(n-1)=2^[n(n-1)/2]
計(jì)算10!,可以通過簡(jiǎn)單的遞歸函數(shù)實(shí)現(xiàn),主要代碼如下,
#include stdio.h
long fact(int n) //遞歸函數(shù)求解階乘
{
if(n0)//輸入數(shù)據(jù)檢測(cè)
{
printf("輸入數(shù)據(jù)n應(yīng)=0!\n");
return -1;
}
if(n=1) //0!=1,1!=1
return 1;
else
return (n*fact(n-1)); //遞歸調(diào)用
}
int main(int argc, char *argv[])
{
printf("10!=%ld\n",fact(10));//打印10!
return 0;
}
c語言中,函數(shù)Func(Type a,……)直接或間接調(diào)用函數(shù)自身,則該函數(shù)稱為遞歸函數(shù)。遞歸函數(shù)必須滿足兩個(gè)條件,
1、每一次調(diào)用函數(shù)自身都更接近于解;
2、函數(shù) 必須有一個(gè)明確的終止處理或計(jì)算的準(zhǔn)則,比如本例中0!=1,1!=1。
累加累乘,呵呵,很簡(jiǎn)單的。
首先,就是定義一個(gè)變量(a=0)來保存結(jié)果,另定義一個(gè)變量(b)實(shí)現(xiàn)數(shù)值的變化。把數(shù)值變化的那個(gè)變量(b)的值每次和保存結(jié)果的變量(a)進(jìn)行運(yùn)算,結(jié)果賦給a.比如1——10的累加,就是先把1賦給a,之后b變成2,和a相加結(jié)果給a。如此反復(fù)就是累+。乘法一樣
#include "stdio.h"
void main()
{int i,t;
i=1;t=2;
for(;i = 5;++i){
i=i+1,t=t*i;
}
printf("%d",t);
}
累乘的前提你需要是不斷的循環(huán),這樣才能不斷的去增加