arrays - 我的任务是编写一个递归函数来打印索引为素数的数组的所有数字
问题描述
我的任务是编写一个递归函数来打印索引为素数的数组的所有数字。
实际上,我可以理解递归,但我无法使用 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);
}
解决方案
在传递数组时,我们总是传递它的名字而不是它的名字和大小。
如果我们传递arr[100]
,它实际上传递了第 100 个索引处的元素,该元素超出了范围(因为数组将从 0 开始并在索引 99 处结束)。
您可以参考这里了解更多详情。
prime(arr, 100);
推荐阅读
- sql - 查询多表多字段时的SQL GROUP BY
- reactjs - react-admin 确认对话框是否接受两个以上的选择选项?我希望我的对话框包含“是”、“取消”、“否”选项
- python - 为什么ReferenceField不会在python中自动取消引用
- python-3.x - Python Django 电子邮件
- git - 如何恢复/恢复从未推送到 GitHub 存储库的文件?
- sql - 访问:用户输入年份查询该会计年度的日期
- firewall - Sonic Firewall NSA 3600 portshield 开关问题
- javascript - 将 npm 模块导入 Google Chrome 扩展内容脚本
- grails - Grails如何使用标准按儿童最大日期对列表进行排序
- state - 是否有记录的方法来获取 Kafka Stream 的所有状态存储?