c++-C++的递归实现数组中的前n个元素实现倒序输出的问题

问题描述

C++的递归实现数组中的前n个元素实现倒序输出的问题

请问以下程序有什么问题

 #include <iostream>
using namespace std;
void fun(int str1[], int a);
int main()
{
    int str[101];
    for(int i=0;i<=101;)
    {
        str[i] = i-1;
    }
    int n;
    cin >> n;
    fun(str, n);
    return 0;
}
void fun(int str1[101], int a)
{
    if(a<0)
    {
        return;
    }
    else
    {
        cout << str1[a];

        return fun(str[101], --a);
    }
}

解决方案

main函数中的for循环i没有自增,跳不出来

解决方案二:

#include <iostream>
using namespace std;
void fun(int str1[], int a);
int main()
{
    int str[101];
//    for(int i=0;i<=101;)    //数组越界 + 死循环
    for(int i=0;i<101;i++)
    {
        if(i == 101)
        {
            int a = 0;
        }
        str[i] = i-1;
    }
    int n;
    cin >> n;
    fun(str, n);
    return 0;
}
void fun(int str1[101], int a)
{
    if(a<0)
    {
        return;
    }
    else
    {
        cout << str1[a];
//      return fun(str[101], --a);
        return fun(str1, --a);    //问题2
    }
}

解决方案三:

字符串 倒序输出 实现
单向链表的倒序输出(栈实现和递归实现)

解决方案四:

#if 1
#include
using namespace std;
void fun(int str1[], int a);
int main()
{
int str[10];
//少了i++,导致死循环
//for (int i = 0; i <= 101;)
//for (int i = 0; i <= 10; ++i)
for (int i = 0; i < 10; ++i)
{
str[i] = i;
}
int n;
cin >> n;
fun(str, n);
return 0;
}
void fun(int str1[101], int a)
{
if (a<=0)
{
return;
}
else
{
//cout << str1[a];
cout << str1[a - 1];

    //return fun(str[101], --a);
    return fun(str1, --a);
}

}
#endif

这是我的代码,附上截图:

解决方案五:

我把数组元素个数改小了,但是不会影响结果...

时间: 2024-11-30 21:33:59

c++-C++的递归实现数组中的前n个元素实现倒序输出的问题的相关文章

PHP中使用递归替换数组中的内容

PHP开发小技巧实例程序,使用递归替换数组中的内容. <?php $arr = array("<小刚>","<小晓>","<小飞>","<小李>","<小红>"); function arrContentReplact($array) { if(is_array($array)) { foreach($array as $k => $v

用谓词在数组中取得符合条件的元素

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userPhoneNumber == %@", model.userPhoneNumber];     VRDetailsVC.listArray = [self.recordDataArray1 filteredArrayUsingPredicate:predicate];//这就是符合谓词要求的结果

使用js判断数组中是否包含某一元素(类似于php中的in_array())_javascript技巧

while case速度最快 复制代码 代码如下: function contains(arr, str) {    var i = arr.length;    while (i--) {           if (arr[i] === str) {           return true;           }       }       return false;}

基于JavaScript实现移除(删除)数组中指定元素_javascript技巧

在Array对象中有给定的函数可以删除数组中指定的元素,虽然非常好用,但是总感觉看不到摸不着的比较别扭,下面就分享一个自定义的删除数组指定索引值元素的函数,希望给大家一个全新的思路. 代码实例如下: var array=[]; array[0]="一"; array[1]="二"; array[2]="三"; array[3]="四"; array[4]="五"; function remove(array

C#数组中ArrayList相关方法的学习

一. ArrayList相关方法的学习 利用enumerator来访问数组: ArrayList list = new ArrayList(1); for (int i = 0; i < 10; i++) list.Add(i); IEnumerator etr = list.GetEnumerator();//枚举 while (etr.MoveNext()) Console.Write(etr.Current + " "); 运行结果: 对了,要想在C#中利用ArrayLis

PHP获取数组中重复的元素实例教程

  1.获取一个数组中重复的元素.代码如下: a.方法一: 代码如下   function array_repeat($arr) { if(!is_array($arr)) return $arr; $arr1 = array_count_values($arr); $newArr = array(); foreach($arr1 as $k=>$v) { if($v>1) array_push($newArr,$k); } return $newArr; } b.方法二: 代码如下   fu

编写函数FUN将大于形参m且紧靠m的k个素数存入xx所指的数组中

问题描述 编写函数FUN将大于形参m且紧靠m的k个素数存入xx所指的数组中例如:若输入17,5则应输出19.23.29.31.37.函数fun中给出的语句仅供参考~谢谢大家,急用 解决方案 解决方案二:#include<iostream>usingnamespacestd;voidPrimeNumber(intm,intk){intnumberCount=0;intbaseNum=m+1;intloops,i;boolhasFound;while(numberCount<k){hasFo

求数组中最长递增子序列的解决方法_C 语言

存储扩展算法n2编程c 写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中的最长递增子序列的长度.例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列为1,2,4,6 或者 -1,2,4,6.(编程之美P198-202)分析与解法根据题目的要求,求一维数组中的最长递增子序列,也就是找一个标号的序列b[0],b[1],-,b[m](0 <= b[0] < b[1] < - < b[m] < N),使得array[b[0]]<array[b[1

如何高效率去掉js数组中的重复项_javascript技巧

方式一: 常规模式 1.构建一个新的临时数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与临时数组对比 3.若临时数组中没有该元素,则存到临时数组中 方式二: 使用了默认Js数组sort默认排序,是按ASCII进行排序: 若要按照升降序的排列如下:<控制台打印输出> 1.先将当前数组进行排序 2.检查当前中的第i个元素 与 临时数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置 3.如果不相同,则将该元素存入结果数组中 方式三: <推荐>利