A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ldk1991125 中级黑马   /  2016-6-22 10:54  /  1336 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


用递归函数求x^y:看了教学视频,写了一个递归函数的调用,因为没有装苹果系统,没办法验证,不知道对不对,求指点啊。
#include <stdio.h>
int power(int x,int y){       //定义递归函数power,变量x,y
    int PO;                   //定义变量PO
    if(y==1){
    PO=x;                     //递归函数结束条件
  } else {
    po=x^(y-i)*x;             //递归函数范围减小条件
    return PO;
}
}
int main(int argc,const char*argv)[]{
    int P,int x,int y;
    printf("请输入x,y的值,中间用逗号隔开");
    scanf("%d,%d",&x,&y);
    P=power;
    printf("%d^%d=%d",x,y,P);
    return 0;
}

2 个回复

倒序浏览
楼主的代码存在如下问题:
1、标识符命名规范错误。你用PO这样的PO标识符来定义一个整型的int变量虽然程序不会报错,但是这种命名是不规范的,大写的标识符一般用来定义宏等。
2、我猜楼主是想来求x的y次方,但是你使用x^y,这样我就不懂了,^是位运算符-->亦或,不知道楼主是不是没有了解^运算符的使用方法。
3、你自定义的方法语法检测都无法通过,因为没有返回值,相信就算楼主不用苹果的Xcode。用其他平台的编译器编译也不会通过。
4、楼主并没有理解递归的概念。递归构成的条件有3:a.函数自己调用自己;b.拥有结束递归的条件;c.有减小范围的条件
5、楼主的代码中中英文输入混合。

下面是正确求x的y次方的代码
  1. //递归实现x的y次方
  2. int getPower(int x, int y){
  3.     int power = 0;
  4.     //退出条件:x^1 = x;
  5.     if (y == 1) {
  6.         power = x;
  7.     } else{
  8.         power = getPower(x, (y - 1)) * x;
  9.     }
  10.     return power;
  11. }
复制代码
回复 使用道具 举报
本帖最后由 FFFF001 于 2016-6-23 12:09 编辑

废话不多说,代码献上:
//
//  main.c
//  FF-6-23-02
//
//  Created by ya on 16/6/23.
//  Copyright © 2016年 ff0002. All rights reserved.
//

#include <stdio.h>

int power(int x,int y)
{       //定义递归函数power,变量x,y
    int PO;                   //定义变量PO
    if(y == 1)
    {
        PO = x;                     //递归函数结束条件
    }
    else
    {
        PO = power(x, (y - 1)) * x;             //递归函数范围减小条件
    }
    return PO;
}


int main(int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
   
    int P, x, y;
    printf("请输入x,y的值,中间用逗号隔开");
    scanf("%d,%d", &x, &y);
   
    P = power(x, y);
   
    printf("%d ^ %d = %d\n", x, y, P);
   
    return 0;
}

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马