當前位置:首頁 » 編程語言 » 遞歸計算的c語言例題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

遞歸計算的c語言例題

發布時間: 2022-11-04 08:52:29

『壹』 c語言題目 遞歸計算兩個正整數的最大公約數

#include<stdio.h>
void swap(int *m,int *n){
int t;
if(m < n){
t = n;
n = m;
m = t;
}
}
int f(int m,int n){
if(m%n == 0)return n;
else
return f(n,m%n);
}
int main(){
int p = 0,m = 0,n = 0;
printf("請按照由大到小的順序輸入兩個整數,用空格隔開:\n");
scanf("%d%d",&m,&n);
swap(m,n);
p = f(m,n);
printf("兩個數的最大公約數是:%d\n",p);
return 0;
}

『貳』 遞歸實現計算 c語言

int rec(int x,int n)
{
if(n==0)
return 1;
else
return rec(x,n-1)*x;
}
int main()
{
int x,n;
printf("請輸入x和n\n");
scanf("%d%d",&x,&n);
printf("結果是:%d\n",rec(x,n));
}

『叄』 C語言求一些關於遞歸的練習題

1、編寫遞歸函數求 1+2+3+……+n 的和;
2、編寫遞歸函數求 2*4*6*……*(2n) 的積;
3、編寫遞歸函數求 n 的階乘;
4、漢諾塔問題;
實際上很多問題都可以通過遞歸來實現,但是看到你的情況估計較難的你實現不了,所以給你幾個簡單的練習一下,這樣可以增強對遞歸的理解,等理解的較為深入後再做稍微難一些的。

『肆』 C語言遞歸練習

#include <stdio.h>

unsigned long func(unsigned long n)

{

if(n>1)

return n*func(n-1);

return 1UL;

}

int main()

{

unsigned long n;

scanf("%lu",&n);

printf("%lu ",func(n));

return 0;

}

『伍』 C語言遞歸函數題

這個是遞歸函數:
recursion(int x,int y)
{
if(y-1 == x)return x;
else return x+recursion(x+1);

}
使用的時候用另個函數調用。

『陸』 [C語言]用遞歸演算法編寫一個程序求Fibonacci數列的第n項值

代碼:

#include&lt;iostream&gt;

#include&lt;vector&gt;

using namespace std;

vector&lt;int&gt;a,b,c;

void jisuan(int n){

if(n&lt;=1)cout&lt;&lt;1&lt;&lt;endl;

else{

a.push_back(1);

b.push_back(1);

for(int i=2;i&lt;=n;++i){

c=b;//存一下b的值

for(int j=b.size()-1,k=a.size()-1;k&gt;=0;k--,j--){

b[j]+=a[k];

if(b[j]&gt;=10){

if(k==0&&j==0){

b.insert(b.begin(),1);

j++;//插入之後需要%10的那個數往後移動一位

}

else{

b[j-1]++;//如果b前面還有數,前一個數+1

}

b[j]%=10;//把數%10,變成小於10的數因為前面已經進位

}

}

a=c;

}

for(int i=0;i&lt;b.size();i++){

cout&lt;&lt;b&lt;i&gt;;

}

cout&lt;&lt;endl;

}

}

int main(){

int n;

cin&gt;&gt;n;

jisuan(n);

return 0;

}

(6)遞歸計算的c語言例題擴展閱讀:

在做c/c++編程的對#include指令都不會陌生,絕大多數人也都知道如何使用,相信仍有人對此是一知半解的,

C:

#include&lt;stdio.h&gt;

C++:

#include&lt;iostream&gt;

表示包含C/C++標准輸入輸出頭文件。包含指令不僅僅限於.h頭文件,可以包含任何編譯器能識別的C/C++代碼文件,包括.c、.hpp、.cpp、.hxx、.cxx等,甚至.txt、.abc等等都可以。

預處理器發現#include指令後,就會尋找指令後面&lt;&gt;中的文件名,並把這個文件的內容包含到當前文件中。被包含文件中的文本將替換源代碼文件中的#include指令,就像你把被包含文件中的全部內容鍵入到源文件中的這個位置一樣。

『柒』 c語言遞歸演算法

用遞歸法計算n!
用遞歸法計算n!可用下述公式表示:
n!=1 (n=0,1)
n×(n-1)! (n>1)
按公式可編程如下:
long ff(int n)
{
long f;
if(n<0) printf("n<0,input error");
else if(n==0||n==1) f=1;
else f=ff(n-1)*n;
return(f);
}
main()
{
int n;
long y;
printf("\ninput a inteager number:\n");
scanf("%d",&n);
y=ff(n);
printf("%d!=%ld",n,y);
}

程序中給出的函數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。

『捌』 C語言!跪求使用遞歸法的例題(帶答案的)

漢諾塔演算法, 一個柱子1上n個盤子套著,大的在下,借用柱子2,全部轉移到柱子3上
#include <stdio.h>
int main()
{
void hanoi(int n,char one,char two,char three); // 對hanoi函數的聲明
int m;
printf("input the number of diskes:");
scanf("%d",&m);
printf("The step to move %d diskes:\n",m);
hanoi(m,'A','B','C');
}

void hanoi(int n,char one,char two,char three) // 定義hanoi函數
// 將n個盤從one座藉助two座,移到three座
{
void move(char x,char y); // 對move函數的聲明
if(n==1)
move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}

void move(char x,char y) // 定義move函數
{
printf("%c-->%c\n",x,y);
}
在hanoi調用hanoi就是遞歸了

『玖』 一道C語言的題目,遞歸法

#include<stdio.h>
#include<math.h>

/*求n的階乘,遞歸,分母部分
* 結束條件為:1的階乘=1
* 遞歸時,一定要有結束條件
*/
int factorial(n)
{
if(n==1) //遞歸結束條件,1的階乘為1
return 1;
else
return n*factorial(n-1); //n的階乘為n乘以(n-1)!
}

int main()
{
int n,x;
size_t i; //i為無符號整數
double re=0;
printf("input n and x:");
scanf("%d%d",&n,&x); //輸入n和x的值
for(i=1;i<=2*n-1;i+=2)
{
/*pow函數求的是x的i次方,分母為i的階乘。本部分可以優化,因為i的階乘算出來了,所以i+2的階乘就是i的階乘*(i+1)*(i+2),不用重復來計算階乘。自己可以試試*/
re += pow(x,i)/factorial(i);
}
printf("\nn=%d\tx=%d\tresult=%f\n",n,x,re);//列印出最後的結果
return 0;
}

『拾』 用C語言遞歸演算法,求第50項的值,題如圖,寫出程序,謝謝啦

#include<stdio.h>
int f(int a){
if(a==0){
return 0;
}else if (a==1) {
return 1;
}else if(a==2){
return 3;
}else{
return 2*f(a-1)-f(a-2);
}
}
void main(){
pritnf("%d",f(50));
}