当前位置:文档之家› 递归练习题(新、选)

递归练习题(新、选)

递归程序设计1.计算最大约数gcd(m,n)可用递归形式定义如下:若m%n等于0,则gcd(m,n)等于n否则,gcd(m,n)等于gcd(n,m%n)。

#include<iostream>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 <<gcd(m, n);system("pause");return 0;}3.27.2017int 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="<<gcd(m,n)<<endl;}system("pause");return 0;}编写一递归函数,求最大约数,并测试#include<iostream>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.编写一递归函数,计算下面的级数:ii m 1......31211)(++++= #include <iostream>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.2017double 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="<<k4(n)<<endl;}system("pause");return 0;}3.编写一递归函数,计算下面的级数:12.....11594735231)(+++++++=i i i m #include <iostream>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 <iostream>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.2017void k5(int n){if(n>0) {cout <<n%10;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<iostream>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。

#include<iostream>using namespace std;int p(int x, int n){if (n== 0)return 1;if (x > 0 && n > 0){if (n == 1)return x;else return (x*p(x, n - 1));}}int main() {int x, n;cout <<"x=";cin >> x;cout <<"n=";cin >> n;if (x <= 0)cout <<"无法计算"<< endl;else cout << p(x, n);cout << endl;system("pause");return 0;}3.27.2017int k7(int x,int n){int t=1;for(int i=1;i<=n;i++)t=t*x;return t;}int main(){int n,x;while(1){cin>>x>>n ;if(n==0)break;cout <<"k7="<<k7(x,n);}system("pause");return 0;}编写一递归函数,计算1+2+3+4+…+n。

n为正整数#include<iostream>using namespace std;int f(int n){if (n == 1)return 1;else return (n + f(n - 1));}int main(){int m, n;cout << "n=";cin >> n;n=abs(n);cout << f(n);system("pause");return 0;}10. 编写一递归函数,计算n!#include<iostream>using namespace std;int j(int n){if (n >= 0){if (n == 1 || n == 0)return 1;if (n > 1)return (n*j(n - 1));}}int main(){int m, n;cout << "n=";cin >> n;n=abs(n);cout << j(n);system("pause");return 0;}11.编写一递归函数 void Inverse(char ch[])将字符串ch逆序输出。

12.编写一递归函数 void Inver_Out(int a[],int n)将数组a中的数据逆序输出。

13. 编写一递归函数void DtoP(int n,int p),实现将十进制数n 转换为p进制数并输出。

14.使用递归调用方法将一个n位整数转换成字符串。

最新文件仅供参考已改成word文本。

方便更改。

相关主题