| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 633 人关注过本帖, 1 人收藏
标题:递归程序出现奇怪的问题了,求大神解答。
取消只看楼主 加入收藏
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:1 
递归程序出现奇怪的问题了,求大神解答。
下面这个程序计算x的n次方的值,x和n都限制为正整数。大家看有注释的报错的那一行,为什么要修改成return power(x, n / 2) * power(x, n / 2)才不报错呢?
谢谢高手热情指导!

//对于x^n,如果n是偶数,利用公式x^n = (x^n/2)^2
//若果n是奇数,则x^n = x * x^n-1
//这个程序使用了递归
#include <stdio.h>
#include <stdlib.h>

int power(int x, int n);

int main()
{
    int x, n;
    printf("Enter x and n: ");
    scanf("%d%d", &x, &n);

    printf("The value is %d", power(x, n));
    return 0;
}

int power(int x, int n){
    if (n == 0)
        return 1;
    else if (n != 0 && n %2 == 0)
        return power(power(x, n / 2), 2);//这一行报错
    else
        return x * power(x, n - 1);
}
搜索更多相关主题的帖子: include return 正整数 Enter power 
2014-09-03 21:29
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
收藏
得分:0 
回复 2 楼 erty1001
我知道了:在n为偶数时,会产生power(x, n) = power(power(x, n / 2), 2) = power(power(power(x, n / 2), 1), 2) = ...,n一直为偶数,递龟没法结束。
IDE是Code:Blocks 13.12,编译器是GNU GCC Compiler,用起来感觉很好。
谢谢大神回复,解答了我的疑惑!
2014-09-03 22:24
快速回复:递归程序出现奇怪的问题了,求大神解答。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013067 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved