前面我們知道了什麼是遞迴以及遞迴是怎麼實現的,現在我們就用遞迴來解決一些小問題,本文題目來自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
本題要求實現乙個計算x的n次方(n≥1)的函式。#include
void
printdigits
(int n )
}int
main()
函式介面定義:
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
本題要求實現ackermenn函式的計算,其函式定義如下:#include
doublefn(
double x,
int n )
intmain()
函式介面定義:
int ack( int m, int n );
其中m和n是使用者傳入的非負整數。函式ack返回ackermenn函式的相應值。題目保證輸入輸出都在長整型
範圍內。
裁判測試程式樣例:
#include
int ack( int m, int n );
int main()
輸入樣例:
2 3輸出樣例:
9
本題要求實現求fabonacci數列項的函式。fabonacci數列的定義如下:#include
intack
(int m,
int n )
}int
main()
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份,扔掉多餘的乙份,然後...