1樓:匿名使用者
//利用遞迴函式求n!,由鍵盤輸入任一整數,求n!
#include
unsigned long jc(unsigned long n)int main()
return 0;}
2樓:仙戈雅
#include
#include
inline int _rec(int n)int main(void)
3樓:visr_午夜
首先明確題目要求:遞迴函式,求n!
遞迴函式的含義:
程式語言中,函式func(type a,……)直接或間接呼叫函式本身,則該函式稱為遞迴函式。
n!表示階乘函式,即1*2*3*……*n
下面給出**:(c語言實現 )
比較簡單的尾遞迴實現:
#include
long digui(int n); //遞迴函式宣告int main()
long digui(int n) //遞迴函式部分
4樓:青鳥中關村專家
fun(int i)
需要計算的數字傳遞進來就可以了
5樓:匿名使用者
【c語言の不懂,抄個加法供參考。編寫程式,用遞迴函式完成,求整數1+……+n的和】
#include
int sum(int);
int main()
int sum(int x)
else}
c++程式設計:用遞迴函式求n!,其中n從鍵盤輸入。
6樓:敬憐晴蕢佩
一個函式在它的函式體內呼叫它自身稱為遞迴呼叫。這種函式稱為遞迴函式。c語言允許函式的遞迴呼叫。
在遞迴呼叫中,主調函式又是被調函式。執行遞迴函式將反覆呼叫其自身,每呼叫一次就進入新的一層。
例如有函式f如下:
intf(int
x)這個函式是一個遞迴函式。但是執行該函式將無休止地呼叫其自身,這當然是不正確的。為了防止遞迴呼叫無終止地進行,必須在函式內有終止遞迴呼叫的手段。
常用的辦法是加條件判斷,滿足某種條件後就不再作遞迴呼叫,然後逐層返回。下面舉例說明遞迴呼叫的執行過程。
【例】用遞迴法計算n!
用遞迴法計算n!可用下述公式表示:
n!=1
(n=0,1)
n×(n-1)!
(n>1)
按公式可程式設計如下:
long
ff(int
n)main()
程式中給出的函式ff是一個遞迴函式。主函式呼叫ff
後即進入函式ff執行,如果n<0,n==0或n=1時都將結束函式的執行,否則就遞迴呼叫ff函式自身。由於每次遞迴呼叫的實參為n-1,即把n-1的值賦予形參n,最後當n-1的值為1時再作遞迴呼叫,形參n的值也為1,將使遞迴終止。然後可逐層退回。
下面我們再舉例說明該過程。設執行本程式時輸入為5,即求5!。在主函式中的呼叫語句即為y=ff(5),進入ff函式後,由於n=5,不等於0或1,故應執行f=ff(n-1)*n,即f=ff(5-1)*5。
該語句對ff作遞迴呼叫即ff(4)。
進行四次遞迴呼叫後,ff函式形參取得的值變為1,故不再繼續遞迴呼叫而開始逐層返回主調函式。ff(1)的函式返回值為1,ff(2)的返回值為1*2=2,ff(3)的返回值為2*3=6,ff(4)的返回值為6*4=24,最後返回值ff(5)為24*5=120。
7樓:事事有成
void fact(int n)
}應該是這樣吧,在用個main函式呼叫它就行了
8樓:匿名使用者
#include
int f(int n)
void main()
9樓:一頁凌風
#include
using namespace std;
long int fact(int j);
void main()
long int fact(int j)
在c語言中用遞迴呼叫的方法求n!
10樓:璐人釔
double jiecheng(double n)
return n * jiecheng(n - 1);}
11樓:匿名使用者
求n的階乘,遞迴,參考**如下:
#include
double fac(int n)
int main()
12樓:匿名使用者
#include
int func(int n)
int main()
執行過程:
-》func(5)
-》5*func(4)
-》5*(4*func(3))
-》5*(4*(3*func(2))))
-》5*(4*(3*(2*func(1))))當n為0的時候停止遞迴,返回結果
由於遇到1的時候返回1,那麼func(1)=1所以結果是5*(4*(3*(2*1))) = 120
13樓:匿名使用者
int fun(int x)
void main()
因為n=n*(n-1)!
所以主要思想是這樣,如果要求的n值為1,則返回1否則返回n*(n-1)!
14樓:匿名使用者
int getn(int n)
如何用c語言編寫函式實現用遞迴法求fibonacci數列前n項的值, n的值由鍵盤輸入?
15樓:聽不清啊
設此所求的數列為:0,1,1,2,3,5,8,13,21,……(n=0,1,2,3,……)
#include
long fibonacci(int n)int main()
16樓:匿名使用者
#include "stdio.h"
int fab(int n)
void main()
17樓:匿名使用者
#include "stdio.h"
int fibonacci(int a)
else
return sum;
}void main()
sum=fibonacci(n);
printf("%d\n",sum);}
不用遞迴方式,編寫函式fun,求任一整數m的n次方
18樓:匿名使用者
本文以c語言為例來
,不用自
遞迴方式編碼如下:
#include
long fun1(int n)
long fun2(int n)
int main()
擴充套件資料用遞迴方式求解方法:
#include
long fun(int m,int n)main()
19樓:匿名使用者
我特意測試了一下你的寫的函式,應該沒什麼錯誤的,找來找去終於找到了解決辦版法:
printf("輸入m和n的值:");
scanf("%d",&m);
scanf("%d",&n);
將輸入的兩個權數分開用兩個scanf函式接受就可以了。
如果寫一個scanf函式來接受,我發現無論如何m,n的值都接受不了,不知道怎麼回事。
scanf函式真是個奇怪的函式。
20樓:匿名使用者
那段沒問來題,你的程式的源問題是main函式看不bai到你後面定義的函式,你du只需zhi要把main函式移動
到其他所有函式定dao義的後面就可以了。或者在main函式定義之前加上下面的兩行函式宣告:
long fun(int, int);
void yzj();
21樓:願有好心情
1)可能輸入本身錯誤
2)可能檔案不存在
3)可能檔案內容錯
用c語言編寫程式從鍵盤輸入一個正整數數n,輸出n!
22樓:匿名使用者
程式設計實現計算n!,也就是n*(n-1)*(n-2)*....*1,可以通過遞迴函式來實現,具體實現方法:
#include
int func(int n)
void main()
在以上程式**中,func()為遞迴函式,主函式main()中接收鍵盤輸入整數值後,呼叫func()遞迴函式,首層m=n*(n-1)!,繼續遞迴呼叫,m=n*(n-1)(n-2)!,這樣逐層遞迴,直到計算出n!。
程式輸出結果如下:
23樓:跪著作揖
#include //定義標頭檔案
int main( ) //宣告主函式
輸出j
return 0; //返回主函式值
}擴充套件資料:
其他方法得到n的階乘:
#include
int prime(int x);
void main( )
int prime(int x)
else
return s;
24樓:匿名使用者
源程式如下:
#include //定義標頭檔案
int main()//宣告主函式
printf("%d!=%d\n",n,jc);//輸出jcreturn 0;//返回主容函式值
} vc++測試如下:
25樓:匿名使用者
晚上好樓
來主,我自已經編譯通過請看
圖 謝謝採納!
#include
int cacu(int n)
void main()圖:
26樓:匿名使用者
#include
int main()
printf("%d的階乘 = %d\n", input, result);}
27樓:德勝介休
考慮資料
溢位#include
void cheng(int a,int n)}}void jiecheng(int a,int n)}void main()
a[0]=1;
scanf("%d",&n);
jiecheng(a,n);
for(i=0;i<1000;i++)
for(j=s;j>=0;j--)
printf("%d",a[j]);
}執行效果:
輸入回:34
輸出答:295232799039604140847618609643520000000
c語言從鍵盤上輸入一個整數n,求n!要求:n!過程用函式實現。
28樓:水撒了一地
#include
int f(int x);
void main()
int f(int x)
return sum;}
29樓:匿名使用者
#include
int fun(int n_);
void main()
int fun(int n_)
return res;}
c語言遞迴求階乘,c語言怎麼用遞迴呼叫函式的方法求n的階乘?
問明 舉例 用遞迴方法求n include int main int n int y printf input a integer number scanf d n y fac n printf d d n n,y return 0 int fac int n int f if n 0 printf...
C 函式遞迴問題,C 用函式遞迴求1 2 到n的問題
const int len 66 const int divs 6 void subdivide char ar,int low,int high,int level int tmain int argc,tchar ar return 0 將陣列ar子分,並在子分構成中不斷在子分的子串中間賦值為 ...
C語言怎麼用遞迴法求階乘,c語言怎麼用遞迴呼叫函式的方法求n的階乘?
辜亭晚示未 n的階乘,就是從1開始乘到n,即1 2 3 n 1 n。即n 1 2 3 n 1 n。而 n 1 1 2 3 n 1 所以可以得出,n n 1 n。由這個概念,可以得出遞迴求階乘函式fact的演算法 1如果傳入引數為0或1,返回1 2對於任意的n,返回n fact n 1 如下 int ...