• 把一下程序中的print()函数改写成


    源代码:

    #include <iostream>
    using namespace std;
    void print( int w )
    {  
      for( int i = 1 ; i <= w ; i++ )
           {  

    for( int j = 1 ; j <= i ; j++ ) cout << i << " " ; cout << endl ; } } int main() { print( 5 ) ; }

    错误代码:

    //错误代码
    #include<iostream>
    using namespace std;
    int print(int w)
    {
        if (w == 1)
        {
            for (int i = 1; i <= w; i++)
            {
                cout <<w << " ";
            }
            cout << endl;
            return 2;
        }
        for (int i = 1; i <= print(w - 1); i++)      //这里有错
    //因为print(w-1)在for循环的条件表达式里,所以每走一次循环都会执行一次
        {
            cout << w << " ";
        }
        cout << endl;
        return w + 1;
    }
    int main()
    {
        int a;
        cin >> a;
        print(a);
        system("pause");
    }

    然后输出了一堆莫名奇妙的东西。

    经过一番调试后,找出了问题所在,改写了代码,把递归的代码部分放到循环外面,问题解决。

    正确代码:

    #include<iostream>
    using namespace std;
    int print(int w)
    {
        if (w == 1)
        {
            for (int i = 1; i <= w; i++)
            {
                cout <<w << " ";
            }
            cout << endl;
            return w+1;
        }
        int a = print(w - 1);      
    //把print(w-1)放到循环外面,并用变量a来传递返回值
        for (int i = 1; i <= a; i++)
        {
            cout << w << " ";
        }
        cout << endl;
        return w + 1;
    }
    int main()
    {
        int a;
        cin >> a;
        print(a);
        system("pause");
    }

    正确输出:

    附上答案里面的代码(比较简洁)

    #include<iostream>
    using namespace std;
    void print(int w)
    {
        int i;
        if( w )
        { 
            print( w-1 );
            for( i=1; i<=w; i++ ) 
                cout << w << "  ";
            cout << endl;
         }
    }
    void main()
    {
        print( 5 );
    }
  • 相关阅读:
    IBM斥资340亿美元收购红帽
    单例模式讨论篇:单例模式与垃圾回收
    Xshell拖拽上传文件插件
    理想的程序员
    Android学习之路
    springboot更改启动logo,佛祖保佑 ,永不宕机 , 永无BUG
    Java多线程实现的四种方式
    IntelliJ IDEA
    Jrebel最新激活破解方式(持续更新)
    PyCharm 2018.2.4永久破解办法
  • 原文地址:https://www.cnblogs.com/urahyou/p/10074061.html
Copyright © 2020-2023  润新知