例1写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数。分别用递归算法和循环迭代法
时间: 2024-09-08 16:04:09 浏览: 27
当然,我可以帮你介绍如何用递归和循环两种方法来编写这个`PrintN`函数。
**递归算法:**
递归法是函数自己调用自身的方式来解决问题。对于这个例子,我们可以定义一个基本情况(当N等于1时),然后处理一般情况(N大于1的情况)。
```c
#include <stdio.h>
void PrintN(int N) {
// 基本情况:如果 N = 1,直接打印
if (N == 1) {
printf("%d ", N);
}
// 递归情况:否则,先打印 N-1,再调用 PrintN 函数处理 N-1
else {
printf("%d ", N);
PrintN(N - 1); // 递归调用
}
}
int main() {
int N;
printf("Enter a positive integer: ");
scanf("%d", &N);
PrintN(N);
return 0;
}
```
**循环迭代法:**
使用循环则是更常见的解决此类问题的方法,它不需要函数自身的调用。我们只需要一个`for`或`while`循环,根据变量`i`从1加到`N`即可。
```c
#include <stdio.h>
void PrintN(int N) {
for (int i = 1; i <= N; i++) {
printf("%d ", i);
}
}
int main() {
int N;
printf("Enter a positive integer: ");
scanf("%d", &N);
PrintN(N);
return 0;
}
```