Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 递归增量澄清_C++ - Fatal编程技术网

C++ 递归增量澄清

C++ 递归增量澄清,c++,C++,我有以下功能: int v[]={0,1,1,1}; int f(int x) { if(x>=1) return v[x]+f(x-1); else return 0; } 当我在main中这样调用它时:coutv[4]没有定义。它有4个元素,因此最大数组索引为3。v[4]未定义。它有4个元素,因此最大数组索引为3。任何情况都可能发生,因为这是未定义的行为 C++中的数组是0 -它们从0开始,到

我有以下功能:

      int v[]={0,1,1,1};
      int f(int x)
      {
          if(x>=1)  return v[x]+f(x-1);
          else return 0; 
      }

当我在main中这样调用它时:
coutv[4]没有定义。它有4个元素,因此最大数组索引为3。

v[4]未定义。它有4个元素,因此最大数组索引为3。

任何情况都可能发生,因为这是未定义的行为<强> C++中的数组是0 -它们从0开始,到元素的数量1~<强> < /p>
4
是一个非常有效的答案,就像
10
42
一样


v
只有索引
0…3
,除此之外的任何内容都是UB。

任何事情都可能发生,因为这是未定义的行为<强> C++中的数组是0 -它们从0开始,到元素的数量1~<强> < /p>
4
是一个非常有效的答案,就像
10
42
一样


v
只有索引
0…3
,除此之外的任何内容都是UB。

v[4]有4个元素,因此最大索引是3。数组索引从0开始,由于您尚未初始化它,因此它将最大索引设为3,因为它目前有4个元素。

v[4]有4个元素,因此最大索引为3。数组索引从0开始,由于您尚未初始化它,它将把最大索引作为3,因为它目前有4个元素。

的输出

      int v[]={0,1,1,1};
      int f(int x)
      {
          if(x>=1)  return v[x]+f(x-1);
          else return 0; 
      }
使用
cout 3(=4个元素)调用时未定义

要更正它,必须调用的输出
cout

      int v[]={0,1,1,1};
      int f(int x)
      {
          if(x>=1)  return v[x]+f(x-1);
          else return 0; 
      }
使用
cout 3(=4个元素)调用时未定义


要更正它,您必须调用
cout
v[4]
未定义,索引是从0开始计算的,在C++中
v[4]
不存在,所以谁知道您将从中得到什么。我想你这里缺少的是索引是从零开始的(从0开始),而不是从1开始。
v[4]
是未定义的,索引是从0开始计算的,在C++中
v[4]
是不存在的,所以谁知道你会从中得到什么。我认为这里缺少的是索引是从零开始的(从0开始),而不是从1开始。
int-elementcount=(sizeof(ptr)/sizeof(ptr[0])不,这与您认为的方式不同。您似乎认为
sizeof(ptr)
返回指针指向的分配空间大小,对吗?以字节为单位?对我错了吗?如果是的话,你能指出互联网上可以教我的地方吗?是的,你错了
sizeof
运算符返回类型的编译时常量大小,在本例中为
int*
,在32位系统上通常为4,在64位系统上为8。@jrok,我已经编译了我编写的程序。它给了我一个正确的输出。数组的sizeof()返回该数组分配的字节数。将其除以每个元素的大小即可得到数组中的元素数。这是一个标准构造,用于获取c和c++
int-elementcount=(sizeof(ptr)/sizeof(ptr[0])中数组的长度不,这与您认为的方式不同。您似乎认为
sizeof(ptr)
返回指针指向的分配空间大小,对吗?以字节为单位?对我错了吗?如果是的话,你能指出互联网上可以教我的地方吗?是的,你错了
sizeof
运算符返回类型的编译时常量大小,在本例中为
int*
,在32位系统上通常为4,在64位系统上为8。@jrok,我已经编译了我编写的程序。它给了我一个正确的输出。数组的sizeof()返回该数组分配的字节数。将其除以每个元素的大小即可得到数组中的元素数。这是一个标准结构,用于获取C和C++中数组的长度。