【问题标题】:This recursive function become infinite loop. Why?这个递归函数变成了无限循环。为什么?
【发布时间】:2014-10-25 19:36:43
【问题描述】:

/* 如果我将第 10 行更改为 "print_array_1(a, n, ++i)" 或 "print_array_1(a, n, i+1)",那么这段代码运行良好。*/

#include<iostream>
#include<cstdio>
using namespace std;

void print_array_1(int a[], int n , int i)        // n = size of array,   i = start index
{
    if(i>=n) return;
    printf("%d\n",a[i]);
    print_array_1(a, n, i++);
}

int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    int n = 5;
    print_array_1(arr, n, 0);
    return 0;
}

【问题讨论】:

  • 您还有问题吗?

标签: loops recursion infinite-loop


【解决方案1】:

假设这是 C,你应该使用++i。为什么?

i++ 增加 i,但返回 i++i 增加 i 并返回 1+1

使用i++,您可以使用相同的i 值继续调用递归函数。

【讨论】:

    【解决方案2】:

    i++ 在调用 print_array_1 之后 递增 i,因此每次调用都会得到 i=0。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-04
    • 2020-02-02
    • 1970-01-01
    • 2015-12-24
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    相关资源
    最近更新 更多