【问题标题】:Attempting to print array elements recursively尝试递归打印数组元素
【发布时间】:2020-04-02 16:55:52
【问题描述】:
#include <stdio.h>


int printArray(a[], unsigned int n){
    if (n == 4){
        printf("%d", a[4]);
    }
    else {
        printf("%d", printArray(a,n+1)); // here is the error, I know. But why?
    }
}


int main(){

    int a[5] = {1,2,3,4,5};
    printArray(a,0);

}

我是 C 的初学者。我正在尝试打印数组的每个元素,但它只正确打印最后一个元素,而不是前一个元素。我知道递归方式有问题。这是我第一次使用没有返回和使用 printf 的递归方式。也许是这误导了我?

输出:

$ ./a.out 
5
0
1
1
0

【问题讨论】:

  • 你没有返回任何东西,那么第二个 printf 应该打印什么?

标签: c arrays printf


【解决方案1】:

你应该打印数组项,而不是函数的返回值,使用这段代码

int printArray(int *a, unsigned int n){
    if (n == 4){
        printf("%d", a[4]);
    }
    else {
        printf("%d", a[n]);
        printArray(a,n+1);
    }
}   

【讨论】:

  • 我还没有做指针,但如果我只是用我最初写的替换 *a , a[] 。无论如何它都有效!
猜你喜欢
  • 2019-04-03
  • 2021-07-01
  • 1970-01-01
  • 2021-02-10
  • 2014-06-21
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多