求C++程序:求两个数最大公约数,用递归实现

求C++程序:求两个数最大公约数,用递归实现,第1张

long gcd(long m,long n)const //求最大公因数;

{

static long x;//设置x具有静态生存期;

if(m>n)//判断大的%小的得余数

{

if(n==0)x=m;//递归出口,当有一个为0时,另一个为最大公因数

else gcd(n,m%n);将余数与小数再求最小公因式;

}

else

{

if(m==0)x=n;

else gcd(m,n%m);

}

return x;

}

我看你是不了解递归函数的具体是怎么实现的, 我给你举一个简单的例子: 就拿阶乘来说吧,

我给你把具体实现的过程画出来

当n=0时,就一步一步返回。这一点很重要。希望对你有帮助。

2010-12-2 09:31的答案有错

我将其修改如下

#include "stdioh"

long power(int m, int n)

{

long y;

if (n == 0) y = 1;

else

{

y = power(m, n / 2);

y = y y;

if (n % 2 == 1 )

y = y m;

}

return y;

}

int main()

{

int m, n;

scanf("%d%d", &m, &n);

long y = power(m, n);

printf("the answer is : %ld", y);

return 0;

}

另一方法

#include<stdioh>

long power(int m,int n)

{

long p;

if(n==0) p=1;

else p=mpower(m,(n-1));

return p;

}

void main()

{

int m,n;long k;

scanf("%d%d",&m,&n);

//if(n=0) k=1;

//else if(n<0) {printf("请重新输入\n");break;}

//else

k=power(m,n);

printf("%ld\n",k);

}

程序如下,已通过调试,输入abcdefg,结果为gfedcba,附说明如下:

#include<stdioh>

int main()

{

char nixu(char s,char p);

char s[20],p;

int i;

scanf("%s",s);//输入一个长度小于20的字符串,由s[20]限定,要改字符串长度就改字符串数组大小

p=s;//将字符串首地址赋给指针p

while(p!='\0') p++;//让指针一直指到字符串结束符

nixu(s,p);

}

char nixu(char s,char p)//通过函数递归倒序输出字符串中字母,直到字符串首地址

{

if(p!=s)

{

p--;

printf("%c",p);

nixu(s,p);

}

else return 0;

}

#include <stdioh>

#include <mathh>

double f(double left,double right){

double mid=(left+right)/2;

if(fabs(right-left)<1e-10)

  return mid;

else{

  double t=pow(mid,4)+3pow(mid,3)-8pow(mid,2)+12mid-10;

  if(t<0)

    return f(mid,right);

  else if(t>0)

    return f(left,mid);

  else

    return mid;

}

}

int main() {

printf("%f\n",f(0,5));

return 0;

}

栈。

栈是线性结构的常见应用,是一种可以实现"先进后出"的存储结构,让我们想一下箱子,往里面放东西,最先放入中的东西被放在底部,后放入的反而在上面,假设我们从上至下的拿东西,那么就是先放入的后出,后放入的先出,即这就是一个"先入后出"的存储结构。栈的应用非常的广泛:函数调用、中断、表达式求值、内存分配、缓存、迷宫都有应用栈的知识。栈和队列实现虽然不同,但都可以通过数组和链表实现,栈分为静态栈和动态栈,静态栈有数组构成,动态栈有链表构成。其中的核心 *** 作就是:压栈和出栈。压栈就是放入栈中,出栈就是拿出栈中。

递归过程指栈的另一个重要应用是在程序设计语言中实现递归过程。一个直接调用自己或通过一系列的过程语句间接地调用自己的过程,称做递归过程。

/

@author lyon_yao

f(x) =(x-1)f(x-1)

/

public class Test {

public static void main(String[] args) {

Systemoutprintln(f(5));

Systemoutprintln(f(50/2));

}

public static double f(double d){

if(d-1>0){

return (d-1)f(d-1);

}else{

return 1;

}

}

}

你那个π 不知道怎么弄

C语言所有递归都可以用非递归算法实现,最典型的就是迭代法,有时比递归更容易理解。至于递归中的形式参数是自动变量,没明白楼主的意思,形参就是形参啊,形参变量也是变量,其内存分配在栈区,随着函数的结束,其内存也会被释放,形参的生命周期与函数生命周期相同哈(同生共死)

以上就是关于求C++程序:求两个数最大公约数,用递归实现全部的内容,包括:求C++程序:求两个数最大公约数,用递归实现、谁能给我讲一下,用c语言编写的汉诺塔程序,是怎么实现递归的啊、编写程序自定义的递归函数long power(int m,int n),计算m的n次幂。利用此函数编程序实现:从键盘输入两个等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9547359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存