注册 登录
编程论坛 C++教室

关于递归调用

a99875984 发布于 2012-04-28 08:20, 551 次点击
程序代码:
#include <iostream.h>
int mihanshu(int a,int b)
{
    int c;
    if(a==0)
            cout<<c<<endl ;
    else
        c=b*mihanshu(a-1,b);
}
想用它作为一个求幂函数的函数,怎么出错了
6 回复
#2
a998759842012-04-28 08:23
回复 楼主 a99875984
程序代码:
#include <iostream.h>
int mihanshu(int a,int b)
{
    int c=0;
    if(a==0)
    cout<<c<<endl ;
    else
    c=b*mihanshu(a-1,b);
    return c;
}
void main()
{
    int a,b,c;
    cin>>a>>b;
    c=mihanshu(a,b);
}
上个问题解决了,单这个程序输入2 2,怎么输出是0啊?我

[ 本帖最后由 a99875984 于 2012-4-28 08:28 编辑 ]
#3
zhoufeng19882012-04-28 09:59
程序代码:
#include <iostream.h>
int mihanshu(int a,int b)

 {
     int c=0;
     if(a==0)
         c = 1;
     else
     c=b * mihanshu(a-1,b);
     return c;

 }
void main()

 {
     int a,b,c;
     cin>>a>>b;
     c=mihanshu(a,b);
    cout << c << endl;

 }
#4
zhoufeng19882012-04-28 10:00
以下是引用a99875984在2012-4-28 08:23:57的发言:

#include <iostream.h>
int mihanshu(int a,int b)
{
    int c=0;
    if(a==0)
    cout<<c<<endl ;
    else
    c=b*mihanshu(a-1,b);
    return c;
}
void main()
{
    int a,b,c;
    cin>>a>>b;
    c=mihanshu(a,b);
}上个问题解决了,单这个程序输入2 2,怎么输出是0啊?我

当然是0了,每次a等于0的时候,你打印c的值,不是0是什么哦?
#5
liudw22012-04-28 11:23
请将C的值初始化为1,不懂的话请看初中的代数
#6
liudw22012-05-01 18:46
确却是声明C就可以了,不用初始化
#7
非己莫属2012-05-01 19:49
在调用的那个函数中,c每次都被初始化为0,最后当a==0时,你直接就输出c了,c为0,输出结果当然为0了。
1