首页 > 解决方案 > 我的任务是编写一个递归函数来打印索引为素数的数组的所有数字

问题描述

我的任务是编写一个递归函数来打印索引为素数的数组的所有数字。

实际上,我可以理解递归,但我无法使用 void 函数。

这是我的代码,我不明白如何正确编写 if 语句来打印它。

#include <stdio.h>
 void prime(int arr[], int n)
{
    if (n == 0) return; //there are no elements
    for (int i = 2; i <= n / i; ++i)
    {
        if (n % i == 0)
            break;
        else
            printf("Number %d has a prime index %d.", arr[n], n);
    }
    prime(arr + 1, n - 1);
}



int main()
{
    int arr[100];
    
    for (int i = 0; i < 100; ++i)
    {
        arr[i] = i;
    }

    prime(arr[100], 100);
}

标签: arrayscfunctionrecursionprimes

解决方案


在传递数组时,我们总是传递它的名字而不是它的名字和大小。

如果我们传递arr[100],它实际上传递了第 100 个索引处的元素,该元素超出了范围(因为数组将从 0 开始并在索引 99 处结束)。

您可以参考这里了解更多详情。

prime(arr, 100);

推荐阅读