递归练习题(新、选)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档