首页 > 试题广场 >

下面程序的输出结果是( ) #in...

[单选题]
下面程序的输出结果是()
#include<iostream>
using namespace std;
class ClassA {
    friend long fun (ClassA a) {
        if (a.i < 2) return 1;
        return a.i * fun(ClassA(a.i-1));
    }
public:
    ClassA(long a) { i = a; }
private:
    long i;
};

int main() {
    int sum = 0;
    for (int i = 0; i < 4; i++) {
        sum += fun(ClassA(i));
    }
    cout << sum;
}


  • 10
  • 12
  • 16
  • 34
i = 0, sum = 0+1;
i = 1, sum = 0+1+1;
i = 2, sum = 0+1+1+2*1;
i = 3, sum = 0+1+1+2*1+3*2;   //10
发表于 2020-10-28 13:11:28 回复(0)
直白的说法: 若进入递归的数x小于2,则返回1,若进入递归的数x大于等于2,则返回x*f(x-1)
发表于 2019-07-16 11:31:23 回复(3)
friend long fun (ClassA a)
    {
        if (a.i < 2) return 1;
        return a.i * fun(ClassA(a.i-1));
    }
Class A(i)->a.i = i;
func(0)=1
func(1)=1   
func(2)=2*func(1)=2*1
func(3)=3*func(2)=3*2*1
 其实这就是一个递归题,
func(i)i==0 || i==1,func(i)=1;
i>=2,func(i)=i*(i-1)*..* 1
发表于 2019-06-04 21:01:17 回复(0)
a.i是什么鬼啊?
发表于 2023-09-06 15:58:46 回复(0)
1126
发表于 2023-03-23 13:25:19 回复(0)
甚至去看了友元函数以及相关的知识点,最后发现用嵌套直接做了....啥也没学到
发表于 2023-02-27 15:08:51 回复(0)
花里胡哨的,有那么复杂吗
发表于 2022-03-07 22:05:24 回复(0)
个人感觉:f(c(0))=1,f(c(1))=1,f(c(2))=2*f(c(1))=2,f(c(3))=3*f(c(2))=6;1+1+2+6=10~
发表于 2021-04-07 17:38:38 回复(0)