Ⅰ c語言遞歸函數問題
#include<stdio.h>
intfun(intn){
intk;
if(n==1)k=10;
elsek=fun(n-1)+2;
returnk;
}
voidmain(){
printf("%d",fun(5));
}
Ⅱ C語言函數遞歸問題(含程序)
這是一個遞歸函數。
1.你如果輸入的是2,那麼在第一個age(2)里就會執行else語句,就是再調用age(2-1)==age(1),再age(1)里你知道是咋樣吧,
2.然後age(1)就會傳回10,你記得是age(2)里的else
c=age(n-1)+2調用的吧,返回的10就變成了c=10+2呸,如果你輸入5啊啥的就回多激磁遮掩的步驟.
3.這個遞歸歸函數的作用就是輸入n,得到10+2*(n-1).
Ⅲ c語言中的遞歸函數
當需要返回值時就return.程序因此不死循環。正不正確,運行一下通過就應該ok.
Ⅳ c語言遞歸函數
遞歸函數:
編程語言中,函數Func(Type a,……)直接或間接調用函數本身,則該函數稱為遞歸函數。遞歸函數不能定義為內聯函數。
在數學上,關於遞歸函數的定義如下:對於某一函數f(x),其定義域是集合A,那麼若對於A集合中的某一個值X0,其函數值f(x0)由f(f(x0))決定,那麼就稱f(x)為遞歸函數。
函數介紹:
在數理邏輯和計算機科學中,遞歸函數或μ-遞歸函數是一類從自然數到自然數的函數,它是在某種直覺意義上是"可計算的" 。事實上,在可計算性理論中證明了遞歸函數精確的是圖靈機的可計算函數。遞歸函數有關於原始遞歸函數,並且它們的歸納定義(見下)建造在原始遞歸函數之上。但是,不是所有遞歸函數都是原始遞歸函數 — 最著名的這種函數是阿克曼函數。
其他等價的函數類是λ-遞歸函數和馬爾可夫演算法可計算的函數。
例子:
//代碼1
void func()
{
//...
if(...)
func();
else
//...
}
條件:
一個含直接或間接調用本函數語句的函數被稱之為遞歸函數,在上面的例子中能夠看出,它必須滿足以下兩個條件:
1) 在每一次調用自己時,必須是(在某種意義上)更接近於解;
2) 必須有一個終止處理或計算的准則。
梵塔的遞歸函數:
//C
void hanoi(int n,char x,char y,char z)
{
if(n==1)
move(x,1,z);
else
{
hanoi(n-1,x,z,y);
move(x,n,z);
hanoi(n-1,y,x,z);
}
}
Ⅳ C語言用遞歸函數函數求完成! 求大神!!
#include<stdio.h>
double getPower(double x,int y)
{
double f;
if(y<0)
return 0;
else if(y==0)
return 1;
else f=getPower(x,y-1)*x;
return f;
}
int main()
{
double x,sum;
int y;
scanf("%lf%d",&x,&y);
sum=getPower(x,y);
printf("%lf",sum);
return 0;
}
【答題不易,望採納謝謝】
Ⅵ 如何使用C語言遞歸函數
遞歸:函數下一次的參數是函數自身上一次的輸出值。(也就是說,函數的下一次取決於上一次的結果,自身依賴)。也正是因為如此,這樣的函數必須有終止值(即遞歸必須有一個條件限定)。否則就會進入死循環。「遞歸」分成「直接遞歸」、「簡介遞歸」。具體可以參考我的博客(點擊, http://www.cnblogs.com/serviceboy/archive/2009/07/19/1526590.html,查看,有代碼有具體示例解釋)。 給出一個求n!的C遞歸:int Fun(int n){ if (n==0 || n==1) return 1; return Fun(n-1)*n;}
Ⅶ 講一下c語言中遞歸函數的使用方法
相當於循環,要有判斷條件,傳遞進去的參數要變化,滿足條件調用自身,不滿足條件就開始一層一層返回。簡單例子:
int
f(int
i){
int
sum=0;
if(i>0)
sum+=f(i-1);
return
sum;
}
main(){
int
a=10;
printf("%d",f(a));
}
Ⅷ c語言遞歸函數的問題
通過分析這個代碼,建立了如圖的樹。
1、當進去A時,num = 1;
2、接著往左進去B,num = 2;
3、往B左邊及右邊因為是NULL直接返回2處,再返回到1處;
4、接著往A右邊C,此時num=3,這里把返回值C壓入寄存器RAX,代碼返回到A,但是最上層A處沒有接收返回值,此時A退出,main函數從RAX取出返回值賦值給變數a。
這就是整個調用過程,這里返回值並不是最上層的返回值,是C的返回值,之所以能得到這個值是這個程序沒有同步其它地方使用了RAX寄存器,它的值沒有被修改。
Ⅸ 用C語言編寫一個遞歸函數
int findf( int n ){
int a,b,c;
b = n % 2;
c = 0;
if ( n>4){
if (b==c){
a=findf( n-1 ) + findf( n-3 );
}
else{
a=findf( n-2 ) + findf( n-4 );
}
return a;
}
else if ( n < 0){
return -1;
}
else{
return 1;
}
}
Ⅹ C語言遞歸函數
P(X=k)=[n!/(k!(n-k)!]*p^k*(1-p)^(n-k)
=[(n-k+1)/k]*[p/(1-p)]*[n!/(k-1)!(n-k+1)!]*p^(k-1)*(1-p)^(n-k+1)
=[(n-k+1)/k]*[p/(1-p)]*P(X=k-1),
[(n-k+1)/k]*[p/(1-p)]>1時,即k<(n+1)p時,P(X=k)>P(X=k-1),k值較小時,P(X=k)隨k的增大而增大,
[(n-k+1)/k]*[p/(1-p)]<1時,即k>(n+1)p時,P(X=k)<P(X=k-1),k值較大時,P(X=k)隨k的增大而減小,
[(n-k+1)/k]*[p/(1-p)]=1時,即k=(n+1)p時,P(X=k)=P(X=k-1).(n+1)p為正整數時,有兩個最大值。