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]='