che*_*oky 6 c recursion return
我找到了一个递归函数,让我有点惊讶这个函数计算出现在数组中的所有负数:
int count_negative(int arr[], int n)
{
if ( n > 0 )
return (*arr < 0) + count_negative( ++arr, n - 1 );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释这一行:
return (*arr < 0) + count_negative( ++arr, n-1 );
Run Code Online (Sandbox Code Playgroud)
谢谢
(*arr < 0)将数组的第一个元素与零进行比较.表达式的结果可以是1(第一个元素是负数)或者0(第一个元素是正数或零).因此,负数元素的数量是该表达式与数组尾部中负数元素数之和.