图中为什么A错了 什么是递归定义

img


函数不是不可以嵌套定义吗为什么C是正确的递归定义是啥意思就是递归的意思吗

#include<stdio.h>
int printarr(int arg[10]){
int i=1;
int ab[10]={9,8,7,6,5,4,3,2,1,0};
arg=ab;//不会改变原来数组的值,因为数组形参可以理解是指针的复制,现在复制的指针向另外一个地方
//如果arg[0]=1;这样是会改变原来数组的元素值,指针所指向的地址的值,可以认为数组指针的复制 也是指向 实参的地址
for (i=0;i<10;++i){
printf("%d\n",arg[i]);
}
return arg[0];
}
int main(void)
{
int arr[10]={0,1,2,3,4,5,6,7,8,9};
printarr(arr);
printf("%d\n",arr[0]);
return 0;
}
函数是可以调用自己的,这样就形成了递归,注意递归的终止条件,不然会死循环。

函数可以嵌套定义的。
int main()
{
int fun(int a){
return a * a;
}
fun(3);
}
int fun(int b){}

形参数组的改变对实参没影响,但是对数组元素的改变会对实参产生影响。
int f(int *a,int b)
{
int *c;
a=c; //对实参没影响,指针a由指向实参指向了c的内存。实参依然在那里。

a[0]=2;//改变了实参元素
}

改变的是数组名,形参不影响实参内容。
https://blog.csdn.net/weixin_50614575/article/details/125479154

函数不可以嵌套定义是对的,函数可以递归的定义,相当于函数可以递归的使用。总的来说,函数不可以嵌套定义,但可以嵌套使用(递归)