Não , mas não pelas razões que outras pessoas deram. A diferença entre recursão e indução não é que a recursão seja "de cima para baixo" e a indução seja "de baixo para cima". A indução é isomórfica para algo chamado "recursão primitiva", mas, em geral, a recursão é estritamente mais poderosa que a indução .
A distinção entre descendente e descendente é trivial - qualquer programa recursivo primitivo "descendente" pode ser mecanicamente convertido em algo "descendente". De fato, qualquer prova por indução pode ser transformada em um programa recursivo. Na estrutura do cálculo das construções indutivas, se você quiser provar que todo número natural é esbelto, você o escreveria como uma função que constrói uma prova de que n é esbelto, fazendo uma chamada recursiva para construir uma prova que n- 1 é enganoso.
O fator-chave da indução é que as coisas são definidas em termos de coisas menores e elas "atingem o fundo do poço" após finitas etapas. Os números naturais são indutivos porque todo natural é 0 ou o sucessor de um natural menor. As listas são indutivas porque todas as listas estão vazias ou podem ser divididas ("desdobradas") em um elemento e em uma lista menor.
Às vezes, programas recursivos não são escritos em termos de coisas menores. Por exemplo, considere esta função da Collatz:
fun collatz(n)
if n <= 1
return 0;
else if n % 2 == 0
return 1 + collatz(n / 2)
else
return 1 + collatz(3 * n + 1)
end
Essa função não é de cima para baixo nem de baixo para cima e, portanto, não é indutiva sobre os números naturais.
Pode haver uma ordem para tratar isso indutivamente, mas para a maioria das coisas simplesmente não há como. Funções sobre fluxos infinitos são um ótimo exemplo. De fato, os fluxos são o exemplo prototípico de um tipo "coindutor".
O livro "Fundamentos práticos para linguagens de programação", de Bob Harper, disponível on-line gratuitamente, apresenta uma boa introdução aos tipos indutivo, coindutor e recursivo.