You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归displayBooks函数遍历数组时重复打印首个元素问题求助

解决递归遍历书籍数组时重复打印首个元素的问题

你的核心问题是没有利用递归参数n定位当前要打印的数组元素,代码里始终通过b->xxx访问数组的第一个元素,所以不管递归多少次,输出的都是同一本书的信息。

修改方案

根据b的类型调整访问方式:

  • 如果b是Book类型的数组(或指向数组首元素的指针),用b[n]访问第n个元素,调用成员函数时用.操作符;
  • 如果b是Book*类型的指针数组,用b[n]访问第n个指针,再用->调用成员函数。

修改后的代码示例(假设b是指向Book数组的指针):

void displayBooks(int n)
{
    if (n >= currentCount) {
        return;
    }
    
    // 用n作为索引访问数组的第n个元素
    cout << "Name: " << b[n].getName() << "\n";
    cout << "Name of Book Author: " << b[n].getAuthor() << "\n";
    cout << "Publication Year: " << b[n].getYearOfPublication() << "\n";
    cout << "ID: " << b[n].getID() << "\n";

    displayBooks(n + 1);
}

原理说明

递归参数n的作用是标记当前要处理的元素索引,你之前的代码完全忽略了这个参数,每次固定访问数组的第一个元素。加上索引后,每次递归调用displayBooks(n + 1),就会处理下一个位置的元素,从而实现完整遍历。

内容的提问来源于stack exchange,提问作者John A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:55:20