c語言遞歸階乘
⑴ c語言怎麼用遞歸法求階乘
1、首先打開vc6.0,新建一個vc項目。
⑵ c語言遞歸求階乘的問題,我不知道哪裡錯了,求大神解答
#include<stdio.h>
int re(int n);
void main()
{
int n = 0;
long c;
scanf("%d",&n);
c = re(n);
printf("階乘的最後值為:%ld",c);
}
int re(int n)
{
long r;
if(n < 0)
{
printf("n<0,error");
}
else if(n == 0|| n == 1)
{
r = 1;
}
else
{
r = re(n-1)*n;
}
return r;
}
程序大的錯誤沒有,就是你的scanf用錯了,詳情看看我改後的程序!
在scanf只能跟輸入格式符 %d%f%c%f 等等! 記得要給變數取地址!
⑶ c語言求1到n階乘的和用遞歸
1、打開vc6.0,新建一個vc項目,添加頭文件,添加一個空的main函數,這里先定義一個用來求階乘的函數,函數的參數為i,階乘就是不斷的和前面的一個數相乘,這里就是不斷和fact函數相乘,之後編寫主函數的內容:
2、在main函數定義int類型變數sum,然後調用fact()將返回值賦予sum,最後使用printf列印sum的值:
3、最後編寫程序好後,來運行程序觀察結果,這里可以看到列印出了6的階乘。以上就是C語言用遞歸的方式求階乘的過程:
⑷ C語言遞歸 計算階乘
#include <stdio.h>
void f(int);
main()
{
int n;
unsigned long fac;
scanf("%d", &n);
fac=f(n);
if(fac)
printf("%d",fac);
}
void f(int n)
{
if(n<=0||n>10)
{
printf("error");
return 0;
}
else if(n==1) return 1;
else return n*f(n-1);
}
⑸ 怎樣用數據結構(C語言)的遞歸方法實現(1!+2!+3!+。。。+n!)階乘
#include<stdio.h>
long fun(int n)//遞歸單個階乘
{
if(n == 1)
return 1;
else
return fun(n - 1) * n;
}
int main()
{
int n, i;
long num = 0;
scanf("%d", &n);
for(i = n; i > 0; i--)//累加階乘
num += fun(i);
printf("%ld\n", num);
}
⑹ c語言怎麼用遞歸調用函數的方法求n的階乘
1、打開VC6.0軟體,新建一個C語言的項目:
⑺ c語言題:用遞歸法求20個階乘
#include"stdio.h"
doublejc(doublen)
{
if(n>1)
returnjc(n-1)*n;
else
return1;
}
intmain()
{
doublei;
for(i=0;i<=20;i++)
printf("%.0lf ",jc(i));
}
再給一個完全用遞歸的:
#include"stdio.h"
doublejc(doublem,doublen)
{
if(m>1)
{
if(n>1)
{
if(m==n)
printf("%.0lf ",jc(m,n-1)*n);
else
returnjc(m,n-1)*n;
}
else
{
if(m>0)
jc(m-1,m-1);
return1;
}
}
else
{
printf("1 ");
}
}
intmain()
{
doubles[20],m;
m=20;
jc(m,m);
}
⑻ c語言算n的階乘的遞歸演算法
思路:遞歸求階乘函數,如果輸入的參數等於1則返回1,否則返回n乘以該函數下次遞歸。
參考代碼:
#include<stdio.h>
intfun(intn)
{
if(n==1||n==0)return1;//如果參數是0或者1返回1
returnn*fun(n-1);//否則返回n和下次遞歸的積
}
intmain()
{
intn;
scanf("%d",&n);
printf("%d ",fun(n));
return0;
}
/*
5
120
*/
⑼ c語言遞歸求階乘
舉例:用遞歸方法求n;
#include<stdio.h>
int main()
{
int n;
int y;
printf("input a integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d ",n,y);
return 0;
}
int fac(int n)
{
int f;
if(n<0)
printf("n<0,data error!");
else if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return(f);
}
(9)c語言遞歸階乘擴展閱讀:
return用法:
return返回一個數值的意思就是把return<表達式>後面表達式的值返回給調用他的函數。舉個例子:
int sum(int i,int j)
{
return i+j;
printf("這個語句不會被執行,因為該子函數執行到上面的return語句就無條件結束了");
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf("%d",c);
}
程序的輸出為:
21
這個21從何而來呢main函數調用sum(a,b)函數時將a的值賦給i,b的值賦給j,上面說了return i+j;會計算i+j的值也就是結果等於21,並將21帶回給調用它的函數,即c=sum(a,b);相當於c=21,這個21就是由sum(a,b)中的return反回來的。