c語言遞迴函式怎麼寫
=#include <stdio.h>
/// 求階乘函式
/// 遞迴思想
/// n! = n * (n-1) * (n-2) * 。 * 1
/// n! = n * [(n-1) * (n-2) * 。 * 1]
/// n! = n * (n-1)! 遞迴方程
/// 這是遞迴實現
unsigned Factorial(unsigned int n)
{
if (n == 0) return 1; // 對於0的階乘,當n=0時,遞迴返回
return n * Factorial(n-1); // 遞迴呼叫
}
void main()
{
int n = 3;
printf("3! = %d",Factorial(n));
}
2.如何使用C語言遞迴函式遞迴:函式下一次的引數是函式自身上一次的輸出值。(也就是說,函式的下一次取決於上一次的結果,自身依賴)。
也正是因為如此,這樣的函式必須有終止值(即遞迴必須有一個條件限定)。否則就會進入無窮迴圈。
“遞迴”分成“直接遞迴”、“簡介遞迴”。具體可以參考我的部落格(點選, ,檢視,有程式碼有具體示例解釋)。
給出一個求n!的C遞迴:
int Fun(int n)
{
if (n==0 || n==1) return 1;
return Fun(n-1)*n;
}
Sorry, 程式略有寫錯誤,主函式請這樣修改:
int main() { int x=0,n=0; printf("輸入x:"); scanf("%d",&x); printf("輸入n:"); scanf("%d",&n); double sum=0; for(int i=1;i<=n;i+=2) { sum+=Result(x,n); }printf("結果是:%lf",sum); system("pause"); }
3.c語言中的遞迴原發布者:zhoujiahaohao2
1.編寫計算X的Y次冪的遞迴函式getpower(intx,int),並在主程式中實現輸入輸出。#include"stdio.h"longgetpower(intx,inty){if(y==1)returnx;elsereturnx*getpower(x,y-1);}voidmain(){intnum,power;longanswer;printf("pleaseinputanumber:");scanf("%d",&num);printf("pleaseinputthenumber'spowerseries:");scanf("%d",&power);answer=getpower(num,power);printf("結果是:%ldn",answer);}結果說明:輸入61再輸入5求得61的5次冪為844596301.2編寫計算學生年齡的遞迴函式。#includeintage(intn){intc;if(n==1)c=10;elsec=age(n-1)+2;returnc;}voidmain(){intn=5;printf("thefivestudent'sageis:%dyearsoldn",age(n));}結果說明:第五個學生的年齡為18歲。3.編寫遞迴函式實現Ackman函式。#includeAcm(intm,intn){if(m==0)returnn+1;elseif(n==0)returnAcm(m-1,1);elsereturnAcm(m-1,Acm(m,n-1));}intmain(){printf("Acm(2,1)=%dn",Acm(2,1));printf("Acm(3,2)=%dn",Acm(3,2));return0;}結果說明:利用遞迴函式求得Acm(2,1)=5,Acm(3,2)=29.實驗小結:
4.C語言 遞迴函式//方法一,不需將轉換後的字元儲存在字元陣列中
#include
void change(int );
int main()
{
int n;
scanf("%d",&n);
change(n);
printf("n");
return 0;
}
void change(int num)
{
if(num==0)return ;
change(num/10);
printf("%d",num%10);
}
//方法二,先將轉換後的字元儲存在字元陣列中
#include
#define LEN 100
int m=0;
void change(int ,char *);
int main()
{
int n,i;
char a[LEN];
for(i=0;ia[i]='