阅读下列递归算法,写出非递归方法实现相同功能的C程序。 void test(int &sum) {int x; scanf(x); if(x=0) sum=0; else {test(sum);sum+=x} printf(sum); }
时间: 2023-11-27 22:04:01 浏览: 126
下面是一个非递归方法实现相同功能的C程序:
```c
#include <stdio.h>
void test(int *sum) {
int x;
scanf("%d", &x);
*sum = 0;
while (x != 0) {
*sum += x;
scanf("%d", &x);
}
}
int main() {
int sum;
test(&sum);
printf("%d\n", sum);
return 0;
}
```
这个程序使用了一个循环来代替原来的递归调用。在每次循环中,它读取输入并将其累加到sum变量中,直到输入为0为止。最后,它打印出sum的值。
相关问题
4.)试将下列递归过程改写为非递归过程。 void test(int &sum) { int x; cin>>x; if(x==0) sum=0; else { test(sum); sum+=x; } cout<<sum; }
n) {
if (n > 0) {
printf("%d\n", n);
test(n - 1);
}
}
非递归过程:
void test(int n) {
while (n > 0) {
printf("%d\n", n);
n--;
}
}
阅读全文