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次幂。利用此函数编程序实现:从键盘输入两个等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)