当前位置:  开发笔记 > 编程语言 > 正文

如何在C中使用递归打印?

如何解决《如何在C中使用递归打印?》经验,为你挑选了2个好方法。

我想1 2 4 8 16 32 64 128 256在屏幕上打印出来.但我得到的只是0 0 0 0 0 0 0 0 0.这是我的代码:

#include
#include

void print(int n) {
  if(n<=8) {
    printf(" %d ",pow(2,n));
    return print(n+1);
  }
}

int main() {
  print(0);
  return 0;
}

Some program.. 8

pow是一个浮点函数.它返回一个double.您无法打印"%d"(使用不匹配的格式和参数是未定义的行为).

使用正确的格式(例如"%f")或将结果转换为int.或者为什么不简单地使用二进制算法将值移位1正确的位数.



1> Some program..:

pow是一个浮点函数.它返回一个double.您无法打印"%d"(使用不匹配的格式和参数是未定义的行为).

使用正确的格式(例如"%f")或将结果转换为int.或者为什么不简单地使用二进制算法将值移位1正确的位数.



2> Govind Parma..:

pow返回一个double,%d格式说明符期望一个int.

尝试更新您的printf使用呼叫%.0f,或者将结果pow转换为int:

选项1:

#include 
#include 

void print(int n)
{
    if(n<=8)
    {
        printf("%.0f\n", pow(2, n));
        return print(n+1);
    }
}

int main()
{
    print(0);
    return 0;
}

选项2:

#include 
#include 

void print(int n)
{
    if(n<=8)
    {
        printf("%d\n", (int) pow(2, n));
        return print(n+1);
    }
}

int main()
{
    print(0);
    return 0;
}

此外,您不应该使用return print(n+1)给定的返回类型printvoid.你可以重写print为一个返回2的幂的函数,n然后从中访问返回值main:

#include 
#include 

int print(int n)
{
    return (int) pow(2, n);
}

int main()
{
    int i;
    for(i = 0; i <= 8; i++)
        printf("%d\n", print(i));
    return 0;
}

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有