习题10-6 递归求Fabonacci数列(10 分)
本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:
$f(n)=f(n−2)+f(n−1) (n\ge2)$,其中$f(0)=0,f(1)=1$。
函数接口定义:
1 | int f( int n ); |
函数f
应返回第n
个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。
裁判测试程序样例:
1 | #include <stdio.h> |
输入样例:
1 | 6 |
输出样例:
1 | 8 |
本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:
$f(n)=f(n−2)+f(n−1) (n\ge2)$,其中$f(0)=0,f(1)=1$。
1 | int f( int n ); |
函数f
应返回第n
个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。
1 | #include <stdio.h> |
1 | 6 |
1 | 8 |
本题要求实现Ackermenn函数的计算,其函数定义如下:
$$
\operatorname{ack}(m, n)=\begin{cases}
n+1, & m = 0 \\\\
\operatorname{ack}(m-1, 1), & n=0 \& \& m\gt0 \\\\
\operatorname{ack}(m-1, \operatorname{ack}(m, n-1)),& m \gt0 \& \& n\gt 0
\end{cases}
$$
1 | int Ack( int m, int n ); |
其中m
和n
是用户传入的非负整数。函数Ack
返回Ackermenn函数的相应值。题目保证输入输出都在长整型
范围内。
1 | #include <stdio.h> |
1 | 2 3 |
1 | 9 |
本题要求实现一个函数,计算下列简单交错幂级数的部分和:
$f(x, n)=x-x^{2}+x^{3}-x^{4}+\cdots+(-1)^{n-1} x^{n}$
1 | double fn( double x, int n ); |
其中题目保证传入的n
是正整数,并且输入输出都在双精度范围内。函数fn
应返回上述级数的部分和。建议尝试用递归实现。
1 | #include <stdio.h> |
1 | 0.5 12 |
1 | 0.33 |
本题要求实现一个计算$x^n(n \geq 1)$的函数。
1 | double calc_pow( double x, int n ); |
函数calc_pow
应返回x
的n
次幂的值。建议用递归实现。题目保证结果在双精度范围内。
1 | #include <stdio.h> |
1 | 2 3 |
1 | 8 |
本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 $1 !+2 !+3 !+\ldots+n !$的值。
1 | double fact( int n ); |
函数fact
应返回n
的阶乘,建议用递归实现。函数factsum
应返回 1!+2!+…+n
! 的值。题目保证输入输出在双精度范围内。
1 | #include <stdio.h> |
1 | 10 |
1 | fact(10) = 3628800 |
1 | 0 |
1 | fact(0) = 1 |
本题要求实现一个用递归计算$1+2+3+\ldots+n$的和的简单函数。
1 | int sum( int n ); |
该函数对于传入的正整数n
返回1+2+3+…+n
的和;若n
不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。
1 | #include <stdio.h> |
1 | 10 |
1 | 55 |
1 | 0 |
1 | 0 |
本题要求实现一个用递归计算$1+2+3+\ldots+n$的和的简单函数。
1 | int sum( int n ); |
该函数对于传入的正整数n
返回1+2+3+…+n
的和;若n
不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。
1 | #include <stdio.h> |
1 | 10 |
1 | 55 |
1 | 0 |
1 | 0 |
本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。
1 | int set_grade( struct student *p, int n ); |
其中p
是指向学生信息的结构体数组的指针,该结构体的定义为:
1 | struct student{ |
n
是数组元素个数。学号num
、姓名name
和成绩score
均是已经存储好的。set_grade
函数需要根据学生的成绩score
设置其等级grade
。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade
还需要返回不及格的人数。
1 | #include <stdio.h> |
1 | 10 |
1 | The count for failed (<60): 1 |
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
输入第一行给出正整数$n(\lt 10)$。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd
格式的日期,“电话号码”是不超过17位的数字及+
、-
组成的字符串。
按照年龄从大到小输出朋友的信息,格式同输出。
1 | 3 |
1 | wang 19821020 +86-0571-88018448 |
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
输入第一行给出正整数$n(\lt 10)$,随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。
1 | 3 |
1 | 25.00, Programming in Delphi |
Update your browser to view this website correctly. Update my browser now