遞迴解決問題(c語言)

2021-10-05 22:45:50 字數 2688 閱讀 5358

前面我們知道了什麼是遞迴以及遞迴是怎麼實現的,現在我們就用遞迴來解決一些小問題,本文題目來自pat浙大版《c語言程式設計(第3版)》題目集

本題要求實現乙個計算非負整數階乘的簡單函式,並利用該函式求 1!+2!+3!+…+n! 的值。

函式介面定義:

double fact( int n );

double factsum( int n );

函式fact應返回n的階乘,建議用遞迴實現。函式factsum應返回 1!+2!+…+n! 的值。題目保證輸入輸出在雙精度範圍內。

裁判測試程式樣例:

#include

double fact( int n );

double factsum( int n );

int main()

輸入樣例1:

10輸出樣例1:

fact(10) = 3628800

sum = 4037913

輸入樣例2:

0輸出樣例2:

fact(0) = 1

sum = 0

#include

void

printdigits

(int n )

}int

main()

本題要求實現乙個計算x的​n次方(n≥1)的函式。

函式介面定義:

double calc_pow( double x, int n );

函式calc_pow應返回x的n次冪的值。建議用遞迴實現。題目保證結果在雙精度範圍內。

裁判測試程式樣例:

#include

double calc_pow( double x, int n );

int main()

輸入樣例:

2 3輸出樣例:

8

#include

double

calc_pow

(double x,

int n)

intmain()

本題要求實現乙個函式,計算下列簡單交錯冪級數的部分和:

f(x,n)=x−x

​2​​ +x

​3​​ −x

​4​​ +⋯+(−1)

​n−1

​​ x

​n函式介面定義:

double fn( double x, int n );

其中題目保證傳入的n是正整數,並且輸入輸出都在雙精度範圍內。函式fn應返回上述級數的部分和。建議嘗試用遞迴實現。

裁判測試程式樣例:

#include

double fn( double x, int n );

int main()

輸入樣例:

0.5 12

輸出樣例:

0.33

#include

doublefn(

double x,

int n )

intmain()

本題要求實現ackermenn函式的計算,其函式定義如下:

函式介面定義:

int ack( int m, int n );

其中m和n是使用者傳入的非負整數。函式ack返回ackermenn函式的相應值。題目保證輸入輸出都在長整型

範圍內。

裁判測試程式樣例:

#include

int ack( int m, int n );

int main()

輸入樣例:

2 3輸出樣例:

9

#include

intack

(int m,

int n )

}int

main()

本題要求實現求fabonacci數列項的函式。fabonacci數列的定義如下:

f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。

函式介面定義:

int f( int n );

函式f應返回第n個fabonacci數。題目保證輸入輸出在長整型範圍內。建議用遞迴實現。

裁判測試程式樣例:

#include

int f( int n );

int main()

intmain()

本題要求實現乙個函式,對乙個整數進行按位順序輸出。

函式介面定義:

void printdigits( int n );

函式printdigits應將n的每一位數字從高位到低位順序列印出來,每位數字佔一行。

裁判測試程式樣例:

#include

void printdigits( int n );

int main()

輸入樣例:

12345

輸出樣例:12345

#include

void

printdigits

(int n )

}int

main()

題目的鏈結

pta

C 指標未解決問題

考慮以下 c code unsafe size is value is uint pb,sizeof byte b console.writeline address of d is 0x,size is value is uint pd,sizeof double d console.writel...

C語言 遞迴解決分魚問題。

a b c d e五個人在某天夜裡合夥去捕魚,到凌晨時疲憊不堪,於是各自找地方睡覺。第二天a醒來,他將所有的魚分成5份,把多餘的一條魚扔掉,拿走自己的乙份。b醒來,也將剩下的魚分為5份,把多餘的一條扔掉,拿走自己的乙份。c d e 也同樣,分別醒來後,也將剩下的魚分為5份,把多餘的一條扔掉,拿走自己...

遞迴解決分魚問題 c語言

問題描述 a,b,c,d,e這5個人合夥夜間捕魚,凌晨時都已經疲憊不堪,於是各自在河邊的樹叢中找地方睡著了。第二天日上三竿時,a,第乙個醒來,他將魚平分為5份,把多餘的一條扔回河中,然後拿著自己的乙份回家去了 b第二個醒來,但不知道a已經拿走了乙份魚,於是他將剩下的魚平分為5份,扔掉多餘的乙份,然後...