黑马程序员技术交流社区
标题: 递归函数的应用 [打印本页]
作者: ldk1991125 时间: 2016-6-22 10:54
标题: 递归函数的应用
用递归函数求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;
}
作者: M.W 时间: 2016-6-23 10:51
楼主的代码存在如下问题:
1、标识符命名规范错误。你用PO这样的PO标识符来定义一个整型的int变量虽然程序不会报错,但是这种命名是不规范的,大写的标识符一般用来定义宏等。
2、我猜楼主是想来求x的y次方,但是你使用x^y,这样我就不懂了,^是位运算符-->亦或,不知道楼主是不是没有了解^运算符的使用方法。
3、你自定义的方法语法检测都无法通过,因为没有返回值,相信就算楼主不用苹果的Xcode。用其他平台的编译器编译也不会通过。
4、楼主并没有理解递归的概念。递归构成的条件有3:a.函数自己调用自己;b.拥有结束递归的条件;c.有减小范围的条件
5、楼主的代码中中英文输入混合。
下面是正确求x的y次方的代码
- //递归实现x的y次方
- int getPower(int x, int y){
- int power = 0;
- //退出条件:x^1 = x;
- if (y == 1) {
- power = x;
- } else{
- power = getPower(x, (y - 1)) * x;
- }
- return power;
- }
复制代码
作者: FFFF001 时间: 2016-6-23 11:18
本帖最后由 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;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |