递归练习题(新、选)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
递归程序设计
1.计算最大约数gcd(m,n)可用递归形式定义如下:若m%n等于0,则gcd(m,n)等于n
否则,gcd(m,n)等于gcd(n,m%n)。
#include
using namespace std;
int gcd(int m, int n){
if (m%n == 0)return n;
else return gcd(n, m%n);
}
int main(){
int m, n;
cout << "m=";
cin >> m;
cout << "n=";
cin >> n;
cout < system("pause"); return 0; }3.27.2017 int gcd(int m,int n) {if(m%n==0)return n; else return gcd(n,m%n);} int main() {int n,m; while(1){ cin>>m>>n; if(m==0)break; cout <<"gcd="< } system("pause"); return 0;} 编写一递归函数,求最大约数,并测试 #include using namespace std; int gcd(int m, int n) { if (m%n == 0) return n; else return gcd(n , m %n ); } int main(){ int m, n; cout << "n="; cin >> n; cout << "m="; cin >> m; cout << gcd(m, n); system("pause"); return 0; }。 2.编写一递归函数,计算下面的级数: i i m 1......31211)(++++= #include using namespace std; double f(double i ){ if (i == 1)return 1; else return (1/i *f(i -1)); } int main(){ int i; cout << "i="; cin >> i; cout << f(i); system("pause"); return 0; }3.27.2017 double k4(double n ) {if (n ==1)return 1; else return (1/n +k4(n -1));} int main() {double n,m; while (1){ cin>>n; if (n==0)break ; cout <<"k4="< } system("pause"); return 0;} 3.编写一递归函数,计算下面的级数: 12.....11594735231)(+++++++= i i i m #include using namespace std; double x( double n ) { if (n > 0) { if (n == 1)return (1 / 3); else return n / (2 * n + 1) + x(n - 1); } } int main() { cout << x(1) << endl; cout << x(2) << endl; cout << x(3) << endl; system("pause"); return 0; } 4.编写一函数,逆序输出一个整数n 。函数头如下: void reverseDisplay(int value) #include using namespace std; void reverseDisplay(int value ) { if (value > 0){ cout << value % 10; reverseDisplay(value / 10); } } int main(){ int i; cout << "i="; cin >> i; reverseDisplay(i); system("pause"); return 0; }3.27.2017 void k5(int n) {if(n>0) {cout < k5(n/10);}} int main() {double n,m; while(1){ cin>>n; if(n==0)break; k5(n);} system("pause"); return 0;} 5.编写一函数,逆序输出一个字符串,函数头如下: void reverseDisplay(const char *s) 6.编写一递归函数,统计一个指定字符在一个字符串中出现的次数,函数头如下: int count(char *,char ) 7.编写一递归函数,计算一个整数中所有数字之和。函数头如下: int sumDigit(long n) #include using namespace std; int sumDigit(long n){ if (n < 10)return n; else return ((n % 10) + sumDigit(n / 10)); } int main(){ int m, n; cout << "n="; cin >> n; n=abs(n); cout << sumDigit(n); system("pause"); return 0; } 8. 编写一递归函数,计算x n。